由于我用的是vs2008,因此直接使用了.net3.5 提供的System.Runtime.Serialization.Json
问题是这样的有些数据比较简单,比如
"items":{"name":"xxx","id":1}
那我可以构建
class Items{
public string name { get; set; }
public int id{ get; set; }
}
这个类,然后用.net3.5 提供的解析器来解析
但是如果是下面这个格式的
"items":{"1":{"itemId":73},"2":{"itemId":"2"},"3":{"itemId":3},"4":{"itemId":4},"8":{"itemId":80001}}
就不知道该这么构建相应的类来序列化这个json数据了,请高手指教,谢谢
问题是这样的有些数据比较简单,比如
"items":{"name":"xxx","id":1}
那我可以构建
class Items{
public string name { get; set; }
public int id{ get; set; }
}
这个类,然后用.net3.5 提供的解析器来解析
但是如果是下面这个格式的
"items":{"1":{"itemId":73},"2":{"itemId":"2"},"3":{"itemId":3},"4":{"itemId":4},"8":{"itemId":80001}}
就不知道该这么构建相应的类来序列化这个json数据了,请高手指教,谢谢
这样你应该会转换了
public struct FarmerInfo
{
public Items[] items;
}
public struct Items
{
public string key;
public ItemsValue value;
} public struct ItemsValue
{
public string itemId;
}
建议你用JsonQueryStringConverter,这个类转换string到一个对象非常容易
FarmerInfo f = new FarmerInfo();
Regex reg1 = new Regex(@"{(?<content>((""\d+""):(({)?.+?(?(4)})),?)+)}");
s = reg1.Replace(s, @"[${content}]");
Regex reg2 = new Regex(@"(?<key>""\d+""):(?<value>({)?.+?(?(1)}))");
s = reg2.Replace(s, @"{""key"":${key},""value"":${value}}");
f = (FarmerInfo)js.ConvertStringToValue(s, f.GetType());抓取回的数据全部替换成我上面给的格式