字符串中 有的是    "inventor":{
                               "@sequence": "1",
                               "@data-format": "epodoc",
                               "inventor-name": {"name": {"$": "MORIGUCHI KAZUTOYO [JP]"}}
                               }
有的是"inventor":
             [ {
              "@sequence": "1",
              "@data-format": "epodoc",
              "inventor-name": {"name": {"$": "MORIGUCHI KAZUTOYO [JP]"}}
            },
           {.......},
            {.......},
            {......}]
我定义的类是[DataContract]
    public class Inventors
    {
        [DataMember(Name = @"inventor")]
        public Inventor[] inventor { get; set; }
    }    [DataContract]
    public class Inventor
    {
        [DataMember(Name = @"sequence")]
        public string senquence { get; set; }
        [DataMember(Name = @"data-format")]
        public string dataformat { get; set; }
        [DataMember(Name = @"inventor-name")]
        public InventorName inventorname { get; set; }
    }问题:如果字符串中是数组 "inventor":[] 就可以反序列化到类中 如果字符串中只有一个"inventor":{} 就获取不到了 怎样能自适应呢?或者有其他的办法吗 希望高手指点一下

解决方案 »

  1.   

    "inventor":{}规范成"inventor":[{}]。
      

  2.   

    感谢2楼 不过这个不是根本的解决办法 在获取回来的字符串中 有很多处都像inverntor字段一样 有可能是一个 有可能是多个 很不好确定需要把哪个进行规范
      

  3.   

    从网上下载Newtonsoft.Json.dll引入到你的项目中,自己就不要写了,下面是个测试代码,希望对你有用
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.IO;
    using Newtonsoft.Json;
    using System.Net;
        class Program
        {
            static void Main(string[] args)
            {
                //string  s=Encoding.UTF8.GetString(("\x00ad\x00d0\x00a5\x00cf\x008d\x00a9"));
     
                Stream s; s.Read();
                //序列化
                TextWriter tw=new StringWriter();
                JsonWriter writer=new JsonTextWriter(tw);
                (new JsonSerializer()).Serialize(writer,new AA());
                string jsonText2 = tw.ToString();
                Console.WriteLine(jsonText2);            //反序列化
                JsonReader reader = new JsonTextReader(new StringReader(jsonText2));
                AA aa=(AA)(new JsonSerializer()).Deserialize(reader,typeof(AA));            Console.Read();
            }
        }
        class AA
        {
            public AA()
            {
                dic.Add("aaa",111);
                dic.Add("bbb", 222);
                dic.Add("ccc", 333);
            }
            public obj2 obj22=new obj2();
            public obj2[] list = new obj2[2] {new obj2(),new obj2()};
            public  Dictionary<string, int> dic = new Dictionary<string, int>();
            string a="1";
            public string b = "1";
            public string c = "1";
            public string aa
            {
                get {
                    return a;
                }
                set
                {
                    a = value;
                }
            }
        }
        class obj2
        {
            public string b = "2";
            public string c = "2"; 
        }