Автор оригинала: Andrew Buchan.
В этом руководстве я собираюсь показать вам, как разбираться на объекте JavaScript (JSON) в объекты .NET, используя C #.
Что такое JSON?
JSON – это легкий формат разряда данных. Людям легко читать и писать и для машин для анализа и генерации. Он основан на подмножестве языка программирования JavaScript: Standard Ecma-262 3RD Edition – декабрь 1999 года.
Для получения дополнительной информации о JSON, посетите www.json.org
Хорошо, давайте начнем!
Давайте начнем с простой строки JSON. В большинстве случаев вы получите эту строку из телефонного звонка. Ради этого учебника мы сделаем это вручную.
var example1 = @"{""name"":""John Doe"",""age"":20}";
Пример1
Это простой объект JSON с 2 полями: имя и возраст.
Чтобы получить доступ к полю (ы) в этой строке JSON, нам нужно определить его в то, что C # # может понять. Это где я хотел бы представить Javascripterializer
класс, который является частью System.web.script
пространство имен.
var JSONObj = new JavaScriptSerializer().Deserialize>(example1);
То, что эта строка, десериализирует строку Пример1
в объект типа Словарь <Строка, строка>
Отказ
Как только мы сделаем это, мы можем получить доступ к полям, как это:
JSONObj["name"]; // equals John Doe JSONObj["age"]; // equals 20
Примечание: Определение словаря должно соответствовать типам значений в нашем JSON. «Джон Доу» – это строка, но 20 – это целое число, поэтому мы должны использовать
Хорошо, поэтому мы десериализовали его, но вы все еще должны ссылаться на него в Clunky Pay – Объект ["Field_name"]
– Итак, давайте исправим это!
Во-первых, создайте класс, который соответствует определению вашего JSON. В нашем случае нам нужен класс со свойством строки и свойство INT:
class Example1Model { public string name { get; set; } public int age { get; set; } }
И теперь для десериализации нашего JSON в объект этого типа:
var example1Model = new JavaScriptSerializer().Deserialize(example1);
И ссылаться на поля:
example1Model.name; // equals John Doe example1Model.age; // equals 20
Как видите, это намного чище! Ваш IDE даст вам Intellisense/Auto-завершение, введите информацию и все, что вы ожидаете от собственного типа в .NET.
Покажи мне больше!
Наш первый пример был отличным, но это было простое. Теперь позвольте справиться с сложной строкой JSON – как насчет списка заказов для клиента?
var example2 = @"{""custId"": 123, ""ordId"": 4567, ""items"":[{""prodId"":1, ""price"":9.99, ""title"":""Product 1""},{""prodId"":78, ""price"":95.99, ""title"":""Product 2""},{""prodId"":1985, ""price"":3.01, ""title"":""Product 3""}] }";
Как в примере 1, первое, что нам нужно сделать, это создать ваши классы, которые представляют данные в JSON. Здесь я создал 2 класса – CustomerAderSummary
Для внешних полей (Custid и Ordid) и список объектов типа типа.
class Item { public int prodId { get; set; } public double price { get; set; } public string title { get; set; } } class CustomerOrderSummary { public int custId { get; set; } public int ordId { get; set; } public List- items { get; set; } }
И десериализовать JSON, мы просто делаем:
var example2Model = new JavaScriptSerializer().Deserialize(example2);
И ссылаться на поля:
example2Model.custId; // equals 123 example2Model.ordId; // equals 4567 example2Model.items.Count; // equals 3 example2Model.items[0].price // equals 9.99
Там у вас есть! Теперь вы можете разбирать JSON в объекты .NET, используя C #! Если вы хотите извлечь и прочитать JSON Via Objective-C и Node.js, не стесняйтесь читать эти две статьи: iOS Quicktip: Получение и чтение данных JSON из URL и как использовать файлы JSON в Node.js
Другие полезные ссылки:
- www.json.org
- www.json2code.com