Строка Parse Json в C #

Я пытаюсь прочитать строку Json в C #, но мне трудно понять, как разбирать строку в C #. Скажем, у меня есть следующая строка Json

[ { "AppName": { "Description": "Lorem ipsum dolor sit amet", "Value": "1" }, "AnotherAppName": { "Description": "consectetur adipisicing elit", "Value": "String" }, "ThirdAppName": { "Description": "sed do eiusmod tempor incididunt ut labore et dolore magna aliqua", "Value": "Text" }, "Application": { "Description": "Ut enim ad minim veniam", "Value": "100" }, "LastAppName": { "Description": "quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat", "Value": "ZZZ" } } ] 

Я хочу разобрать это в arraylist или словаре, используя формат, подобный

 descriptionList["AppName"] = "Lorem ipsum dolor sit amet"; valueList["AppName"] = "1"; 

Я играл с Json.Net, но примеры, которые я видел, не дают мне четкого представления о том, как я должен это делать. Каков наилучший способ достичь этого? Не могу ли это сделать, как в jQuery, используя инструкцию foreach?

Я использую Json.net в своем проекте, и он отлично работает. В этом случае вы можете сделать это, чтобы проанализировать ваш json:

EDIT: я изменил код, чтобы он поддерживал чтение вашего json-файла (массива)

Код для parsingа:

 void Main() { var json = System.IO.File.ReadAllText(@"d:\test.json"); var objects = JArray.Parse(json); // parse as array foreach(JObject root in objects) { foreach(KeyValuePair app in root) { var appName = app.Key; var description = (String)app.Value["Description"]; var value = (String)app.Value["Value"]; Console.WriteLine(appName); Console.WriteLine(description); Console.WriteLine(value); Console.WriteLine("\n"); } } } 

Вывод:

 AppName Lorem ipsum dolor sit amet 1 AnotherAppName consectetur adipisicing elit String ThirdAppName sed do eiusmod tempor incididunt ut labore et dolore magna aliqua Text Application Ut enim ad minim veniam 100 LastAppName quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat ZZZ 

Кстати, вы можете использовать LinqPad для тестирования вашего кода, проще, чем создавать решение или проект в Visual Studio, я думаю.

 json: [{"ew":"vehicles","hws":["car","van","bike","plane","bus"]},{"ew":"countries","hws":["America","India","France","Japan","South Africa"]}] 

c # code: взять только одно значение, например слово «велосипед».

 //res=[{"ew":"vehicles","hws":["car","van","bike","plane","bus"]},{"ew":"countries","hws":["America","India","France","Japan","South Africa"]}] dynamic stuff1 = Newtonsoft.Json.JsonConvert.DeserializeObject(res); string Text = stuff1[0].hws[2]; Console.WriteLine(Text); 

вывод:

 bike 

вы можете попробовать с System.Web.Script.Serialization.JavaScriptSerializer :

 var json = new JavaScriptSerializer(); var data = json.Deserialize>[]>(jsonStr); 

Вместо арраиста или словаря вы также можете использовать динамику. В большинстве случаев я использую EasyHttp для этого, но уверен, что другие проекты будут делать то же самое. Пример ниже:

 var http = new HttpClient(); http.Request.Accept = HttpContentTypes.ApplicationJson; var response = http.Get("url"); var body = response.DynamicBody; Console.WriteLine("Name {0}", body.AppName.Description); Console.WriteLine("Name {0}", body.AppName.Value); 

На NuGet: EasyHttp

То, что вы пытаетесь десериализовать в словаре, на самом деле является объектом Javascript, сериализованным в JSON. В Javascript вы можете использовать этот объект как ассоциативный массив, но на самом деле это объект, что касается стандарта JSON.

Таким образом, у вас не возникнет проблем с десериализацией того, что у вас есть со стандартным сериализатором JSON (например, .net, DataContractJsonSerializer и JavascriptSerializer) для объекта (с элементами, называемыми AppName, AnotherAppName и т. Д.), Но на самом деле интерпретировать это как словарь, Мне нужен сериализатор, который идет дальше спецификации Json, которая, насколько мне известно, ничего не знает о словарях.

Одним из таких примеров является тот, который каждый использует: JSON .net

Существует другое решение, если вы не хотите использовать внешнюю библиотеку, которая должна преобразовать ваш объект Javascript в список, прежде чем сериализовать его в JSON.

 var myList = []; $.each(myObj, function(key, value) { myList.push({Key:key, Value:value}) }); 

теперь, если вы сериализуете myList для объекта JSON, вы должны быть десериализованы в List> с любым из вышеупомянутых сериализаторов. Тогда этот список станет совершенно очевидным для преобразования в словарь.

Примечание: ValueDescription является следующим classом:

 public class ValueDescription { public string Description { get; set; } public string Value { get; set; } } 
  • Что такое эквивалент JSON.NET XPath, SelectNodes XML, SelectSingleNode?
  • как десериализовать JSON в IEnumerable с помощью Newtonsoft JSON.NET
  • Поиск конкретного JToken по имени в иерархии JObject
  • JSON.NET и nHibernate Lazy Загрузка коллекций
  • В чем разница между PreserveReferencesHandling и ReferenceLoopHandling в Json.Net?
  • Использование JSON.NET для возврата ActionResult
  • Уничтожить stream массива json по одному элементу за раз
  • Можете ли вы определить, был ли объект, десериализованный объект, отсутствием поля с classом JsonConvert в Json.NET
  • Регистрация пользовательского JsonConverter по всему миру в Json.Net
  • Json.Net добавляет $ id к объектам EF, несмотря на то, что PreserveReferencesHandling указывает на "None"
  • Может ли Json.NET сериализовать / десериализовать в / из streamа?
  • Interesting Posts

    переменная, вложенная для циклов

    Клавиатура iMessage Receding в приложении iOS

    Как я могу анализировать проблемы производительности до / во время процесса входа в систему?

    Как включить функции из другого файла в свой Perl-скрипт?

    Ошибка библиотеки библиотеки материалов Google Тип программы уже присутствует: android.support.v4.app.INotificationSideChannel $ Stub $ Proxy

    Как преобразовать символ в строку?

    R.exe, Rcmd.exe, Rscript.exe и Rterm.exe: какая разница?

    Как получить данные из службы в действие

    Требуется ли proguard.cfg для проектов библиотеки?

    Могу ли я потерять три IP-адреса в каждой сети при подключенной сетевой сети Xen?

    Сериализация XML в Java?

    Как заставить Firefox открывать все ссылки на закрытых вкладках, кроме этих белых?

    Почему установка DEBUG = False делает мой доступ к статическим файлам django неудачным?

    Как избежать специальных символов в MySQL?

    Могу ли я записать динозавра на CD?

    Давайте будем гением компьютера.