Я использую System.Text.Json
для десериализации некоторых файлов json. (В частности, этот вызов из Last.fm API в формате json)
JSON, который я пытаюсь десериализовать, имеет довольно нетрадиционный способ обработки нулевых значений для некоторых объектов, например, когда его нулевое значение, я получаю следующее:
"tags": "",
И вот так, когда у него есть значения:
"tags": {
"tag": [
{
"name": "classic rock",
"url": "https://www.last.fm/tag/classic+rock"
},
{
"name": "rock",
"url": "https://www.last.fm/tag/rock"
}
]
}
Мой класс C # выглядит так:
public class Artist
{
public Tags Tags { get; set; }
}
public class Tags
{
public Tag[] Tag { get; set; }
}
public class Tag
{
public string Name { get; set; }
public string Url { get; set; }
}
Как мне проверить, является ли объект пустой строкой, прежде чем пытаться десериализовать его?
Когда я пытаюсь десериализовать его:
var deserializedObject = JsonSerializer.Deserialize<T>(requestBody);
Выдает System.Text.Json.JsonException: The JSON value could not be converted to FMBot.LastFM.Domain.Models.Tags. Path: $.artist.tags
ошибку.
Раньше этот вызов работал, когда на самом деле значение было null
, но теперь, когда это пустая строка, она не работает, и я не могу найти решение.
JsonConverter
для явной обработки этого случая. См. docs.microsoft. com / en-us / dotnet / standard / serialization / - person Chris Pickford   schedule 19.05.2021