我正在尝试解析一个 JSON 响应,其中包含一些我不太熟悉的内容,而且我也没有经常在野外见过。
在其中一个 JSON 对象内部,有一个动态命名的 JSON 对象。
在这个例子中,里面有一个JSON对象"bugs"
named "12345"
这与错误编号相关。
{
"bugs" : {
"12345" : {
"comments" : [
{
"id" : 1,
"text" : "Description 1"
},
{
"id" : 2,
"text" : "Description 2"
}
]
}
}
}
我好奇的是:解析这样的动态命名 JSON 对象最有效的方法是什么?
给定一些 JSON 实用工具,例如
- http://jsonutils.com/
- http://json2csharp.com/
他们将采用像上面这样的 JSON 响应,并将其变形为如下所示的类:
jsonutils
public class Comment
{
public int id { get; set; }
public string text { get; set; }
}
public class 12345
{
public IList<Comment> comments { get; set; }
}
public class Bugs
{
public 12345 12345 { get; set; }
}
public class Root
{
public Bugs bugs { get; set; }
}
json2csharp
public class Comment
{
public int id { get; set; }
public string text { get; set; }
}
public class __invalid_type__12345
{
public List<Comment> comments { get; set; }
}
public class Bugs
{
public __invalid_type__12345 __invalid_name__12345 { get; set; }
}
public class RootObject
{
public Bugs bugs { get; set; }
}
问题在于它会生成一个class
具有动态名称。因此,对该 API 的其他标识符的后续查询将导致失败,因为名称不匹配,也不会生成[JsonProperty("")]
因为它将包含上面生成的示例中的动态类名称。
尽管 JSON 是有效的,但这似乎是这种格式的 JSON 的限制。不幸的是,我对此 JSON API 没有任何控制权,所以我很好奇解决这个问题的最佳方法是什么?