MaxDepth
По умолчанию MaxDepth равен 0,
и это означает предел 64. Корень
считается глубиной 1. Плоский объект
при MaxDepth = 1 сериализуется;
вложенный объект при том же пределе
даёт JsonException.
Синтаксис
options.MaxDepth = 1;
Пример
Давайте проверить значение по умолчанию:
using System;
using System.Text.Json;
class Program
{
static void Main()
{
var options = new JsonSerializerOptions();
bool res = options.MaxDepth == 0;
Console.WriteLine(res);
}
}
Результат выполнения кода:
True
Пример
Давайте сериализовать плоский класс:
using System;
using System.Text.Json;
class Item
{
public string Name { get; set; }
}
class Program
{
static void Main()
{
var options = new JsonSerializerOptions { MaxDepth = 1 };
Item item = new Item { Name = "abcde" };
string res = JsonSerializer.Serialize(item, options);
Console.WriteLine(res);
}
}
Результат выполнения кода:
{"Name":"abcde"}
Пример
Давайте сериализовать вложенный объект:
using System;
using System.Text.Json;
class Inner
{
public string Name { get; set; }
}
class Outer
{
public Inner Child { get; set; }
}
class Program
{
static void Main()
{
var options = new JsonSerializerOptions { MaxDepth = 1 };
Outer outer = new Outer
{
Child = new Inner { Name = "abcde" }
};
try
{
JsonSerializer.Serialize(outer, options);
}
catch (JsonException)
{
Console.WriteLine("fail");
}
}
}
Результат выполнения кода:
"fail"
Смотрите также
-
ReferenceHandler,
циклы ссылок -
Deserialize,
разбор вложенного JSON -
JsonSerializerOptions,
объект настроек -
Serialize,
запись JSON