Рубрики
Без рубрики

Как разобрать JSON в объект C #

В этом руководстве показано, как анализировать объект OjavaScript (JSON) на объекты .NET, используя C #

Автор оригинала: 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