反序列化具有固定字段名称的小型、固定大小、固定结构的 JSON 字符串很容易:只需定义一个包含所有字段的类(具有正确的类型和名称,在编译时都知道)。
反序列化可变大小的重复嵌套对更具挑战性,但可以借助类内的List<>来完成。
但是,如果在编译时字段名称未知,我该怎么办?例如:
{
"container":{
"GD01AB491103":{
"field_id1":11,
"field_id2":12,
"field_id3":13,
"field_id4":"fourteen"
},
"DC01AB491103":{
"field_id1":21,
"field_id2":22,
"field_id3":23,
"field_id4":"twenty four"
},
"GH01AB451101":{
"field_id1":31,
"field_id2":32,
"field_id3":33,
"field_id4":"thirty four"
}
.
.
.
},
"terminator"
}
如何反序列化这样的字符串?
(最好使用 .NET 的JavaScriptSerializer,但如果它太弱/无能,我可能需要求助于其他东西)
编辑:澄清挑战的性质:在上面的示例中,为了定义一个类:
public class ??????
{
public int field_id1 {get;set;}
public int field_id2 {get;set;}
public int field_id3 {get;set;}
public string field_id4 {get;set;}
}
我需要先查询 JSON 字符串,然后在运行时构建包含这些变量名类对象的类(反射?)?看起来太麻烦了……也许有更理智的方法?
或者,类/字段名称可能与 .NET 的JavaScriptSerializer无关,而重要的是类型?(当然还有正确的结构)