Сериализация дочерних объектов JsonElement не учитывает настроенный регистр ⇐ C#

Место общения программистов C#
Anonymous
Сериализация дочерних объектов JsonElement не учитывает настроенный регистр

Сообщение Anonymous »

У меня есть API .NET 8, который использует библиотеку System.Text.Json для сериализации JSON.
У API есть конечная точка, которая возвращает объекты, структурированные следующим образом:

Код: Выделить всё

public record Item(string Key, JsonElement Value);
Проблема, с которой я столкнулся, заключается в том, что при сериализации имена свойств дочерних объектов не соответствуют указанной политике именования (в данном случае CamelCase).
Воспроизведение проблемы:

Код: Выделить всё

var options = new JsonSerializerOptions
{
PropertyNamingPolicy = JsonNamingPolicy.CamelCase
};

/*
JsonElement of type String results in:
{
"key": "1",
"value": "StringValue"
}
*/
var stringItem = JsonSerializer.Serialize(
new Item(
Key: "1",
Value: JsonSerializer.SerializeToElement("StringValue")
),
options
);

/*
JsonElement of type JsonElement results in:
{
"key": "1",
"value": {
"Property1": "P1",
"Property2": "P2"
}
}

instead of:
{
"key": "1",
"value": {
"property1": "P1",
"property2": "P2"
}
}

*/
var jsonItem = JsonSerializer.Serialize(
new Item(
Key: "1",
Value: JsonSerializer.SerializeToElement(new
{
Property1 = "P1",
Property2 = "P2"
})
),
options
);

Как мне добиться того, чего я ищу?


Подробнее здесь: https://stackoverflow.com/questions/791 ... red-casing

Вернуться в «C#»