由于我用的是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数据了,请高手指教,谢谢

解决方案 »

  1.   

    "items":[{"key":"1","value":{"itemId":73}},{"key":"2","value":{"itemId":"2"}},{"key":"3","value":{"itemId":3}},{"key":"4","value":{"itemId":4}},{"key":"8","value":{"itemId":8001}}]
    这样你应该会转换了
        public struct FarmerInfo
        {
            public Items[] items;
        }
        public struct Items
        {
            public string key;
            public ItemsValue value;
        }    public struct ItemsValue
        {
            public string itemId;
        }
    建议你用JsonQueryStringConverter,这个类转换string到一个对象非常容易
      

  2.   


                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());抓取回的数据全部替换成我上面给的格式