JsonInclude
Публичное свойство с
get и set попадает в JSON
и без атрибутов.
JsonInclude нужен для
непубличного
set или поля. Скрыть член -
JsonIgnore,
переименовать -
JsonPropertyName.
Синтаксис
using System.Text.Json.Serialization;
[JsonInclude]
public string Value { get; private set; }
Пример
Давайте сериализовать публичное свойство:
using System;
using System.Text.Json;
class Open
{
public string Name { get; set; }
}
class Program
{
static void Main()
{
string json = JsonSerializer.Serialize(
new Open { Name = "abcde" });
bool res = json.Contains("abcde");
Console.WriteLine(res);
}
}
Результат выполнения кода:
True
Пример
Давайте заполнить свойство с
private set через
JsonInclude:
using System;
using System.Text.Json;
using System.Text.Json.Serialization;
class Secret
{
[JsonInclude]
public int Value { get; private set; }
}
class Program
{
static void Main()
{
var secret = JsonSerializer.Deserialize<Secret>(
"{\"Value\":12345}");
int res = secret.Value;
Console.WriteLine(res);
}
}
Результат выполнения кода:
12345
Пример
Давайте прочитать JSON без
JsonInclude:
using System;
using System.Text.Json;
class Locked
{
public int Value { get; private set; }
}
class Program
{
static void Main()
{
var lockedObj = JsonSerializer.Deserialize<Locked>(
"{\"Value\":12345}");
bool res = lockedObj.Value == 0;
Console.WriteLine(res);
}
}
Результат выполнения кода:
True
Смотрите также
-
JsonIgnore,
не писать поле -
JsonPropertyName,
имя в JSON -
JsonRequired,
поле обязательно -
JsonSerializable,
генератор на компиляции