我必须调用第三方API来检索一些数据。根据搜索结果,API将返回2种响应类型中的1种。
如果一切顺利,API将返回类似于以下内容的内容.
{
"Items": [
{
"Id": "ABCD",
"Description": "Some text here"
},
{
"Id": "1234",
"Description": "Some text here"
}
]
}
但是,如果没有找到任何东西或者传递给搜索的值无效,则API将返回如下内容.
{
"Items": [
{
"Error": "2",
"Text": "Something went wrong"
}
]
}
通常,我只需要几个类就可以将JSON
解析成一个值的集合,但是我不知道我应该如何提前知道用哪个类来解析它们。
使用Microsoft .NET Core
/C#
。目前,从System.Text.Json
而不是NewtonSoft
使用JSON
,但我认为这仍然是可以实现的
我发现了一个引用here,它暗示了在响应文本中搜索“error”这个词,但很可能会出现在有效数据中,老实说,这感觉像是一种肮脏的做事方式。
2条答案
按热度按时间t3irkdon1#
而不是只寻找字符串“错误”,寻找一个节点名为“错误”。
将结果作为字符串给出,并定义类来保存成功响应或错误响应:
dvtswwa32#
如果你的C#版本不支持记录,那么一个具有上述字符串属性的类(例如
string Id { get; init; }
或string Id { get; set; } ...
)是一个替代方案。未在json中的.NET属性应保留为初始化,因此在初始化后,可以确定处置。
https://learn.microsoft.com/en-us/dotnet/api/system.text.json.serialization.jsonunmappedmemberhandling?view=net-8.0&viewFallbackFrom=net-7.0
静默跳过任何未Map的属性。这是默认行为。
你可能会有不同的实现/细节,但这给出了总体思路。