解决方案 »

  1.   


    class city{
     {
                         [DataMember]
    public string city_name;// "安庆",
                         [DataMember]
    public string city_code;// "AH_AnQing",
                         [DataMember]
    public string abbr;// "皖",
                         [DataMember]
    public string engine;// 0,
                         [DataMember]
    public string engineno;// 0,
                         [DataMember]
    public string classa;// 1,
                         [DataMember]
    public string classno;// 6,
                         [DataMember]
    public string regist;// 0,
                         [DataMember]
    public string registno;// 0
                     }
    class province{
    [DataMember]
    public string province_code;// "AH",
                 [DataMember]
    public string province;// "安徽",
                 [DataMember]
    public city[] citys;//[]
    }class result{
     [DataMember]
    public string error_code;// 0,
         [DataMember]
    public string reason;// "Success",
         [DataMember]
    public province result;// [
    }
      

  2.   

      string s = "";
                StreamReader sr = new StreamReader("3.json");
                s = sr.ReadToEnd();
                sr.Close();
                JObject jo = (JObject)JsonConvert.DeserializeObject(s);
                JToken torrentsArray = (JToken)jo["result"];
                foreach (JToken result in torrentsArray)
                {
                    MessageBox.Show(result["province_code"].ToString());   
                    JArray jar = JArray.Parse(result["citys"].ToString());
                    for (var i = 0; i < jar.Count; i++)
                    {
                        JObject j = JObject.Parse(jar[i].ToString());
                        MessageBox.Show(j["city_name"].ToString());     
                        MessageBox.Show(j["city_code"].ToString());                          
                    }               
                }
      

  3.   

    已解决,原因是DataContractJsonSerializer 对多重JSON支持性差.用Newtonsoft.Json OK
    附一点代码.
     static void Main(string[] args)
            {
                string jsonBook = getJson();
                vHearder bk1 = JsonConvert.DeserializeObject<vHearder>(jsonBook);
                Console.WriteLine(bk1.ToString());
            }
            private static string getJson()
            {
                try
                {
                    string filepath = @"F:\Province.txt";
                    System.IO.FileInfo fi = new System.IO.FileInfo(filepath);
                    System.IO.StreamReader sr = fi.OpenText();
                    return sr.ReadToEnd();
                }
                catch (Exception localIOException)
                {
                  
                }
                return "";
            }
        }    public class vHearder
        {
            public string error_code { get; set; }        public string reason { get; set; }        public ProvinceList[] result { get; set; }
                    }
        public class ProvinceList
        {
            public string province_code  { get; set; } 
            public string province { get; set; }
            public ProvinceCitys[] citys { get; set; }        
        }
        public class ProvinceCitys
        {
            public string city_name { get; set; } 
            public string city_code{ get; set; }  
            public string abbr{ get; set; }  
            public int engine{ get; set; }  
            public int engineno{ get; set; }  
            public int classa{ get; set; }    
            public int classno{ get; set; }   
            public int regist{ get; set; }   
            public int registno{ get; set; }    
        }