1. 程式人生 > >C# 複雜情況下json的一種解析方法

C# 複雜情況下json的一種解析方法

得到某簡訊服務商返回的資訊:
"{\"code\":\"SUCCESS\",\"data\":[{\"smsId\":\"1540706661367xx100\",\"mobile\":\"1560xxxx82\",\"customSmsId\":null}]}"
data看來是個集合。
構造如下類;

   public class C_SmsRespon
    {
       public string code;
       public List<C_Data> data;

    }

    public class C_Data
    {
        public string smsId;
        public string mobile;
        public string customSmsId;
    }


傳送簡訊返回:

報錯:無法將型別為“Newtonsoft.Json.Linq.JObject”的物件強制轉換為型別“WINAPP_SMS.C_SmsRespon”

     string ret = string.Empty;
                。。。。。。
                StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.Default);
                ret = sr.ReadToEnd();
                C_SmsRespon smsrespon = (C_SmsRespon)JsonConvert.DeserializeObject(ret);  //C_SmsRespon
//這句報 無法將型別為“Newtonsoft.Json.Linq.JObject”的物件強制轉換為型別“WINAPP_SMS.C_SmsRespon”。

用以下兩個方法中的任意一個都可以,

              

  C_SmsRespon smsrespon = (C_SmsRespon)JsonConvert.DeserializeObject(ret, typeof(C_SmsRespon));  //C_SmsRespon ok!
  C_SmsRespon smsrespon = (C_SmsRespon)JsonConvert.DeserializeObject<C_SmsRespon>(ret);  //C_SmsRespon ok