Можно использовать библиотеку Json.NET. Эта библиотека позволяет парсить json в двух режимах:
- используя JSON serializer;
- используя LINQ to JSON.
JSON serializer работает так же как стандартный JavaScriptSerializer
. То есть нужно определить классы модели в соответствии с данными в JSON-строке и затем вызывать метод десериализации:
Product product = JsonConvert.DeserializeObject<Product>(jsonData);
У такого подхода есть недостаток — поля в строке JSON могут отличаться по нотации от C#-кода. Например, если в JSON есть поле product_id
, то в C#-классе придется создать свойство с именем Product_id
, хотя правильным считается имя ProductId
. Кроме того, в JSON может быть записан сложный граф объектов, и создавать все эти объекты в C# очень утомительно. Поэтому Json.NET поддерживает LINQ TO JSON — возможность считывания данных из части строки без полного преобразования в граф объектов. Работает это примерно так:
JObject o = JObject.Parse(json);
var titles =
from p in rss["field1"]["field1"].Children()
select (string)p["title"];
Здесь объект класса JObject
содержит анонимные данные из JSON-строки.
Также Json.NET поддерживает различные способы обратного парсинга — из .NET объектов в JSON-строку.