Nice-books.net
» » » » Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

Тут можно читать бесплатно Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю. Жанр: Базы данных год 2004. Так же Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте Nice-Books.Ru (NiceBooks) или прочесть краткое содержание, предисловие (аннотацию), описание и ознакомиться с отзывами (комментариями) о произведении.
Перейти на страницу:

    "hasTweeters": true,

    "hasSubWoofers": false,

    "stationPresets": [

      89.3,

      105.1,

      97.1

    ],

    "radioId": "XF-552RR6"

  },

  "isHatchBack": false

}

При чтении данных JSON в коде C# по умолчанию поддерживается чувствительность к регистру символов. Политика именования соответствует настройке PropertyNamingPolicy, применяемой во время десериализации. Если ничего не установлено, тогда используется стандартный стиль Pascal. Установка PropertyNamingPolicy в CamelCase свидетельствует об ожидании того, что все входящие данные JSON должны быть представлены в "верблюжьем" стиле. Если политики именования не совпадают, то процесс десериализации (рассматриваемый далее) потерпит неудачу.

При десериализации JSON существует третий вариант — нейтральность к политике именования. Установка параметра PropertyNameCaseInsensitive в true приводит к тому, что canSubmerge и CanSubmerge будут десериализироваться. Вот код установки этого параметра:

JsonSerializerOptions options = new()

{

  PropertyNameCaseInsensitive = true,

  IncludeFields = true

};

Обработка чисел с помощью JsonSerializer

Стандартным режимом обработки чисел является Strict, который предусматривает, что числа будут сериализироваться как числа (без кавычек) и сериализироваться как числа (без кавычек). В классе JsonSerializerOptions имеется свойство NumberHandling, которое управляет чтением и записью чисел. В табл. 20.14 перечислены значения, доступные в перечислении JsonNumberHandling.

Перечисление JsonNumberHandling имеет атрибут flags, который делает возможным побитовое сочетание его значений. Например, если вы хотите читать строки (и числа) и записывать числа в виде строк, тогда применяйте следующую настройку:

JsonSerializerOptions options = new()

{

   ...

   NumberHandling = JsonNumberHandling.AllowReadingFromString &

                    JsonNumberHandling.WriteAsString

};

При таком изменении данные JSON, созданные для класса Car, будут выглядеть так:

(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})

{

  "canFly": true,

  "canSubmerge": false,

  "theRadio": {

    "hasTweeters": true,

    "hasSubWoofers": false,

    "stationPresets": [

<b>      &quot;89.3&quot;,</b>

<b>      &quot;105.1&quot;,</b>

<b>      &quot;97.1&quot;</b>

    ],

    &quot;radioId&quot;: &quot;XF-552RR6&quot;

  },

  &quot;isHatchBack&quot;: false

}

Потенциальные проблемы, связанные с производительностью, при использовании JsonSerializerOption

В случае применения класса JsonSerializerOption лучше всего создать единственный экземпляр и многократно использовать его повсюду в приложении. С учетом сказанного модифицируйте операторы верхнего уровня и методы, относящиеся к JSON, как показано ниже:

JsonSerializerOptions options = new()

{

    PropertyNameCaseInsensitive = true,

    PropertyNamingPolicy = JsonNamingPolicy.CamelCase,

    IncludeFields = true,

    WriteIndented = true,

    NumberHandling =

      JsonNumberHandling.AllowReadingFromString |

      JsonNumberHandling.WriteAsString

};

SaveAsJsonFormat(options, jbc, &quot;CarData.json&quot;);

Console.WriteLine(&quot;=&gt; Saved car in JSON format!&quot;);

SaveAsJsonFormat(options, p, &quot;PersonData.json&quot;);

Console.WriteLine(&quot;=&gt; Saved person in JSON format!&quot;);

static void SaveAsJsonFormat&lt;T&gt;(JsonSerializerOptions options,

  T objGraph, string fileName)

=&gt; File.WriteAllText(fileName,

 System.Text.Json.JsonSerializer.Serialize(objGraph, options));

Стандартные настройки свойств JsonSerializer для веб-приложений

При построении веб-приложений вы можете применять специализированный конструктор для установки следующих свойств:

PropertyNameCaseInsensitive = true,

Перейти на страницу:

Троелсен Эндрю читать все книги автора по порядку

Троелсен Эндрю - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки Nice-Books.Ru.


Язык программирования C#9 и платформа .NET5 отзывы

Отзывы читателей о книге Язык программирования C#9 и платформа .NET5, автор: Троелсен Эндрю. Читайте комментарии и мнения людей о произведении.


Уважаемые читатели и просто посетители нашей библиотеки! Просим Вас придерживаться определенных правил при комментировании литературных произведений.

  • 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
  • 2. Просьба отказаться от оскорблений, угроз и запугиваний.
  • 3. Просьба отказаться от нецензурной лексики.
  • 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.

Надеемся на Ваше понимание и благоразумие. С уважением, администратор Nice-Books.


Прокомментировать
Подтвердите что вы не робот:*
Подтвердите что вы не робот:*