问题描述
想用JSON.NET将JSON字符串直接转换为定义的对象,但是下面的JSON格式有一个属性是动态的:{'week':'周一','school':'第一中学','classList':{'001':{'name':'初一一班','num':'30人'},'002':{'name':'初一二班','num':'22人'},'003':{'name':'初一三班','num':'32人'}}}就是001,002,003这样一直下去,具体多少个是根据数据返回而定的这种情况是否可以定义一个MODEL并进行转换?如果不行,那怎么去读取这种结构数据呢?
解决方案
解决方案二:
varm1=newGoods{Id="001",Name="小王"};varm2=newGoods{Id="002",Name="小李"};varm3=newGoods{Id="003",Name="小张"};varlist=newList<Goods>();list.Add(m1);list.Add(m2);list.Add(m3);stringjson=JsonConvert.SerializeObject(list);Console.WriteLine(json);//打印结果为:[{"Id":"001","Name":"小王"},{"Id":"002","Name":"小李"},{"Id":"003","Name":"小张"}]
是这个意思吧?
解决方案三:
不是的啊!字符串格式我已经定义好了{'week':'周一','school':'第一中学','classList':{'001':{'name':'初一一班','num':'30人'},'002':{'name':'初一二班','num':'22人'},'003':{'name':'初一三班','num':'32人'}}}通过这个字符串去定义类型,怎么定义。。。你那个是自己定义,把问题简单化了,但是现在的问题是格式已经固定不能更改了。
解决方案四:
你的json可以看成是这个对象转换后的结果:classA{stringWeek;stringSchool;List<B>classList;}classB{stringname;intcount;}不管有多少个B实例,它们哦度是calsslist的一个元素而已。
解决方案五:
http://stackoverflow.com/questions/3142495/deserialize-json-into-c-sharp-dynamic-object
解决方案六:
不能模型实体化。你只能使用json解析工具,例如Json.Net,使用它的JsonToken结构去读取。
解决方案七:
原则上,你可以反序列化为ExpandoObject类型的对象,然后使用它的IDictionary<string,object>接口去遍历。不过,使用更能更强、效率更高的json解析库,也是很好的选择。
解决方案八:
引用6楼sp1234的回复:
原则上,你可以反序列化为ExpandoObject类型的对象,然后使用它的IDictionary<string,object>接口去遍历。不过,使用更能更强、效率更高的json解析库,也是很好的选择。
能否给点代码示例该如何读取里面的信息呢?