Включить открытые поля в генерируемые данные JSON можно двумя способами. Первый способ предусматривает использование класса JsonSerializerOptions
JsonSerializer о необходимости включить все поля. Второй способ предполагает модификацию классов за счет добавления атрибута [Jsonlnclude] к каждому открытому полю, которое должно быть включено в вывод JSON. Обратите внимание, что при первом способе (применение JsonSerializationOptions) будут включаться все открытые поля в графе объектов. Чтобы исключить отдельные открытые поля с использованием такого приема, вам придется использовать для этих полей атрибут JsonExclude.Модифицируйте метод SaveAsJsonFormat()
static void SaveAsJsonFormat
{
var options = new JsonSerializerOptions
{
IncludeFields = true,
};
File.WriteAllText(fileName,
System.Text.Json.JsonSerializer.Serialize(objGraph, options));
}
Вместо применения класса JsonSerializerOptions
Xml и они не будут помехой JsonSerializer):// Radio.cs
public class Radio
{
[JsonInclude]
public bool HasTweeters;
[JsonInclude]
public bool HasSubWoofers;
[JsonInclude]
public List
[JsonInclude]
public string RadioId = "XF-552RR6";
...
}
// Car.cs
public class Car
{
[JsonInclude]
public Radio TheRadio = new Radio();
[JsonInclude]
public bool IsHatchBack;
...
}
// JamesBondCar.cs
public class JamesBondCar : Car
{
[XmlAttribute]
[JsonInclude]
public bool CanFly;
[XmlAttribute]
[JsonInclude]
public bool CanSubmerge;
...
}
// Person.cs
public class Person
{
// Открытое поле.
[JsonInclude]
public bool IsAlive = true;
...
}
Теперь в результате запуска кода любым способом все открытые свойства и поля записываются в файл. Однако, заглянув содержимое файла, вы увидите, что данные JSON были записаны в
На заметку!
Поля для сериализации JSON обрабатываются точно так же, как для десериализации JSON. Если вы выбирали вариант включения полей при сериализации JSON, то также должны делать это при десериализации JSON.Понятный для человека вывод данных JSON
В дополнение к варианту с включением открытых полей экземпляр класса JsonSerializer
static void SaveAsJsonFormat
{
var options = new JsonSerializerOptions
{
IncludeFields = true,
WriteIndented = true
};
File.WriteAllText(fileName,
System.Text.Json.JsonSerializer.Serialize(objGraph, options));
}
Заглянув в файл CarData.json
{
"CanFly": true,
"CanSubmerge": false,
"TheRadio": {
"HasTweeters": true,
"HasSubWoofers": false,
"StationPresets": [
89.3,
105.1,
97.1
],
"RadioId": "XF-552RR6"
},
"IsHatchBack": false
}
Именование элементов JSON в стиле Pascal или в "верблюжьем" стиле