Десерериализовать список данных JSON
Необходимо десериализовать список данных в модель вот такого типа
[
{
"value1": "zzz",
"value2": "qwe",
},
{
"value1": "111",
"value2": "yyy",
},
]
Модель
public class Test
{
public string value1 { get; set; }
public string value2 { get; set; }
}
var valueData = JsonSerializer.Deserialize<IReadOnlyList<Test>>(stringValue);
При десериализации вываливается ошибка, я так понимаю из за того что так ожидается анонимный массив? Как правильно задать модель для преобразования?
Ответы (1 шт):
Вы хотяб ошибку давали, которую вам пишет, ибо пока не запустить - фиг поймешь.
Вам ошибка говорит следующее:
The JSON object contains a trailing comma at the end which is not supported in this mode.
Это означает то, что в вашем JSON есть так называемые "Висящие запятые" (Trailing commas), это все те запятые, которые находятся в конце последних объектов.
[
{
"value1":"zzz",
"value2":"qwe",
^^^
},
{
"value1":"111",
"value2":"yyy",
^^^
},
^^^
]
Некоторые библиотеки по умолчанию отключают возможность использования подобных запятых и выносят эту опцию в настройки, Microsoft в своей новоиспеченной System.Text.Json не исключение.
У вас есть по сути 3 варианта:
- Убрать из JSON строки все висящие запятые.
Переопределить настройки:
var options = new JsonSerializerOptions { AllowTrailingCommas = true }; var valueData = JsonSerializer.Deserialize<IReadOnlyList<Test>>(stringValue, options);Использовать другую библиотеку для работы с JSON (например
Newtonsoft.Jsonпо умолчанию разрешает использовать такие запятые).