Если вы хотите выбрать только несколько полей из сложного JSON, вы можете использовать Cinchoo ETL - библиотеку с открытым исходным кодом
В приведенном ниже примере показано, как выбрать RollId
и [112 ] значения из вашего json
using (var r = new ChoJSONReader("## YOUR JSON FILE PATH ##")
.WithJSONPath("$.._data")
.WithField("RollId", jsonPath: "$..Id.RollId", fieldType: typeof(string))
.WithField("MType", jsonPath: "$..Data.MType", fieldType: typeof(string))
)
{
foreach (var rec in r)
{
Console.WriteLine((string)rec.RollId);
Console.WriteLine((string)rec.MType);
}
}
Надеюсь, это поможет.
Важно передать набор символов функции htmlentities, поскольку значение по умолчанию является ISO-8859-1:
utf8_encode(htmlentities($source,ENT_COMPAT,'utf-8'));
Необходимо применить htmlentities сначала, чтобы позволить utf8_encode кодировать объекты правильно.
(РЕДАКТИРОВАНИЕ: Я изменился от своего мнения прежде, которое порядок не имел значения на основе комментариев. Этот код тестируется и работает хорошо).
Во-первых: utf8_encode
функция преобразовывает от ISO 8859-1 до UTF-8. Таким образом, Вам только нужна эта функция, если Вашим входным кодированием/набором символов является ISO 8859-1. Но почему Вы не используете UTF-8 во-первых?
Во-вторых: Вам не нужно htmlentities
. Вам просто нужно htmlspecialchars
заменять специальные символы символьными ссылками. htmlentities
заменил бы “слишком много” символы, которые могут быть закодированы непосредственно с помощью UTF-8. Важный то, что Вы используете ENT_QUOTES
заключите стиль в кавычки для замены одинарных кавычек также.
Так мое предложение:
// if your input encoding is ISO 8859-1
htmlspecialchars(utf8_encode($string), ENT_QUOTES)
// if your input encoding is UTF-8
htmlspecialchars($string, ENT_QUOTES, 'UTF-8')
Могло бы быть легче забыть htmlentities и использовать раздел CDATA. Это работает на раздел заголовка, который не кажется, что поддержка закодировала символы HTML в средстве просмотра RSS Firefox:
<title><![CDATA[News & Updates " > » ☂ ☺ ☹ ☃ Test!]]></title>
Не использовать htmlentities()
!
Просто используйте символы UTF-8. Просто удостоверьтесь, что Вы объявляете кодирование канала в HTTP-заголовках (Content-Type:application/xml;charset=UTF-8
) или сбой этого, в самом канале с помощью <?xml version="1.0" encoding="UTF-8"?>
на первой строке.
Вы хотите сделать $output = htmlentities(utf8_encode($source));
. Это вызвано тем, что Вы хотите преобразовать свои международные символы в надлежащий UTF8 сначала и затем иметь амперсанды (и возможно некоторые символы UTF-8 также) возвращенный к объектам HTML. Если Вы делаете объекты сначала, то некоторые международные символы не могут быть обработаны правильно.
Если ни один из Ваших международных символов не будет измененным utf8_encode, то он не имеет значения, какой порядок Вы призываете их.
После долгих проб и ошибок я наконец нашел способ правильно отображать строку из значения базы данных в кодировке utf8 через файл xml на странице html:
$output = '<![CDATA['.utf8_encode(htmlentities($string)).']]>';
Надеюсь, это кому-то помогает.