我正在尝试解析一个JSON响应,其中包括一些我不太熟悉的内容,也没有经常看到。
在一个JSON对象内部,有一个动态命名的JSON对象。
在这个例子中,在"bugs"
里面有一个名为"12345"
的JSON对象,与一个缺陷号相关联。
{
"bugs" : {
"12345" : {
"comments" : [
{
"id" : 1,
"text" : "Description 1"
},
{
"id" : 2,
"text" : "Description 2"
}
]
}
}
}
我感兴趣的是:如何最有效地解析这样一个动态命名的JSON对象?
给定一些类似于JSON工具,比如: 它们将把上面的JSON响应转换成以下形式的类:
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; }
}
json2charp
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,所以我想知道解决这个问题的最佳方法是什么?