反序列化JSON不同的结构,但在C#中使用相同的名称

时间:2016-04-01 10:50:50

标签: c# json

我在C#中使用一些API工作,它在JSON中返回带有404和200(!)状态代码的“错误”,但结构不同。

1)HTTP状态200:

{ "Errors": "Duplicated" }

2)HTTP状态200:

{ "Errors": {"some_key":"Invalid"} }

3)HTTP状态404:

{ "Errors": "some_key1":["Invalid"], "some_key2":["Invalid"] }

1 - 地图到字符串 - 好的,但不是Dictionary<string,string> 2 - 映射到Dictionary<string,string>,但不映射到字符串 3 - 将其映射到ModelState Dictionary<string,List<string>>确定,因为StatusCode是diff(我在Json字符串中重命名为“Errors”并将其映射到diff属性名称。

唯一的问题是案例1和案例2,因为两者都返回了相同的HTTP状态代码和相同的节点名称“错误”。

是否有人处理过这些案件?你怎么处理它们?是否有任何Netwon Json deserialzier设置将Case 2扁平化为仅使用1,2,3 ..自动生成密钥的字符串或Case 1进入字典?

还有其他想法吗?

干杯

1 个答案:

答案 0 :(得分:0)

使您的属性成为动态对象。 https://msdn.microsoft.com/en-us/library/dd264736.aspx。然后根据可用的属性,您可以转换它或直接从动态读取属性。