处理.NET json的最佳方法[1,2,“三”]

时间:2010-07-08 09:23:57

标签: .net json

-edit-也许有一个使用属性的解决方案?

我找到了最奇怪的json。它看起来像下面的字符串。我能想到处理它的唯一方法是使用一个对象数组。我从未在下面的数组中看到过整数和字符串混合。

然后我被迫进行类型转换。是否有更好的方法来获取整数和字符串?

注意:第一个数组可以包含0到20个元素。它内部的数组总是有3个,前两个是整数,第三个是一个字符串。也许我可以利用这些知识对我有利吗?

{
 var ser = new JavaScriptSerializer();
 var o = ser.Deserialize<RootObj>(@"{""resources"": [[123,567,""<div ...""]]}");
 var o2 = o.resources[0];
 var v = (int)o2[1];
 var sz = (string)o2[2];
}
class RootObj {
 public object[][] resources;
}

2 个答案:

答案 0 :(得分:0)

听起来有点LINQ会在这里派上用场。鉴于您的反序列化对象o,您需要以下内容。

var result = o.Select(c => new
                      {
                          v1 = (int)c[0],
                          v2 = (int)c[1],
                          sz = (string)c[2],
                      });

请注意,new { ... }构造创建了一个anoynomous类型的对象,如果更合适,可以使用struct。

但是,您还没有给出任何真实的上下文,所以最好的解决方案实际上可能是什么都不做,并将反序列化的结果保留为弱类型的对象数组...您总是可以将值转换为特定类型你需要稍后明确使用它们。

答案 1 :(得分:0)

忽略它,因为使用对象并不坏。