我正在使用System.Text.Json
来反序列化一些json数据。(更具体地说,是来自Last.fm API的此调用以json格式返回)
我试图反序列化的json处理某些对象的null值的方式相当不寻常,例如当其为null时,我会得到以下结果:
"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
来明确处理此情况。请参见:https://learn.microsoft.com/en-us/dotnet/standard/serialization/system-text-json-converters-how-to - Chris Pickford