当我尝试反序列化不总是以相同格式出现的 JSON 时,我遇到了问题。我得到的 JSON 是这样的(为清楚起见进行了修剪):
{
"header": {
"code": "4",
"description": "Input Validation Error",
"errors": {
"code": "100",
"description": "externalServiceCode: must match '[A-Za-z0-9_]+'"
}
},
"externalCode": "259716_TRAVELAC"
},
{
"header": {
"code": "4",
"description": "Input Validation Error",
"errors": [
{
"code": "100",
"description": "Currency not valid"
},
{
"code": "100",
"description": "Can not be empty"
}
]
},
"externalCode": "259716_TRA"
}
如您所见,“错误”值可能很简单:
"errors":{"code":"1","description":"description"}
或者可以作为一个数组出现:
"errors":[{....},{....}].
我对 JSON 格式没有任何控制权(我获得它的服务是由另一家公司提供的)。
问题是我找不到将这个 JSON 解析为 C# 的简单方法。我制作了自定义类,如果我将它作为一个简单的对象尝试,如果有多个错误,我会错过数据,如果我认为它是一个数组,如果 JSON 只有一个错误,我什么也得不到(当只有一个时,请注意错误部分中缺少的括号 [])。
有没有办法解决这个问题?我尝试了几种方法,但似乎没有任何效果。