C# 解析json


在接口開發的過程中經常通過接口獲取數據返回是json格式字符串。

但是返回的字符串可能比較復雜,可能不止一種類型的數據。

例如:

{
    "resultCode": "0",
    "resultMsg": "查詢成功!",
    "resultData": {
        "classinfo": [
            {
                "classNo": "101",
                "className": "小A"
           
            },
            {
                "classNo": "101",
                "className": "小B"
            },
         
        ],
        "otherinfo": [
            {
                "otherNo": "1111",
                "otherType": "A"            
            },
            {
              
                "otherNo": "222",
                "otherType": "b",
            }
         ]
    }
}

如何解析呢剔除其他信息只獲取具體數據呢?

ps:使用JavaScriptSerializer 或者 Json.Net 都可以

 第一種方法我用的是JavaScriptSerializer 。

 第二種方法用的是 Json.Net 但是需要在NuGET里面添加該服務(推薦)或者上網下載dll文件引入。

方法一: 直接按照 json的格式構建對象就可以直接解析了

這樣所有的返回數據就變成一個對象。

  JavaScriptSerializer jss = new JavaScriptSerializer();
 result_Msg result = jss.Deserialize<result_Msg>(json);

 

1  
2                     if (result.resultData.classinfo!= null && result.resultData.classinfo.Count > 0)
3                     {
4                       List<classinfo>  classinfos= result.resultData.classinfo;
5                     }

 

 1     [Serializable]
 2     [DataContract]
 3     public class result_Msg
 4     {
 5         /// <summary>
 6         /// code
 7         /// </summary>
 8         [DataMember(IsRequired = false)]
 9         public string resultCode { get; set; }
10         /// <summary>
11         /// msg
12         /// </summary>
13         [DataMember(IsRequired = false)]
14         public string resultMsg { get; set; }
15         /// <summary>
16         /// 數據集合
17         /// </summary>
18         [DataMember(IsRequired = false)]
19         public resultData resultData { get; set; }
20     }
1  [Serializable]
2     public class resultData
3     {
4         public List<classinfo> classinfo{ get; set; }
5         public List<otherinfo> otherinfo{ get; set; }
6       
7     }

 方法二 :先解析成字典,獲取到數據以后再次轉換成json然后解析,思路是這個思路,如果遇到其他更加復雜的json也可以 按照這個思路去解析

 1             //第一次解析
 2             Dictionary<string, object> dic = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, object>>(json);
 3             //獲取具體數據部分
 4             object obj = dic["resultData"];
 5             //將數據部分再次轉換為json字符串
 6             string jsondata =  Newtonsoft.Json.JsonConvert.SerializeObject(obj);
 7             //獲取數據中的  不同類型的數據   
 8             Dictionary<string, object> dicc = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, object>>(jsondata);
 9 
10             //chalssinfo 
11             object objclass = dicc["classinfo"];
12             string jsonclass = Newtonsoft.Json.JsonConvert.SerializeObject(objclass);
13             DataTable tclass = Newtonsoft.Json.JsonConvert.DeserializeObject<DataTable>(jsonclass);
14             //otherinfo 
15             object objother = dicc["otherinfo"];
16             string jsonother = Newtonsoft.Json.JsonConvert.SerializeObject(objother);
17             DataTable tother = Newtonsoft.Json.JsonConvert.DeserializeObject<DataTable>(jsonother);
18 
19 
20            // tclass 和  tother 里面分別存放 classinfo和otherinfo  然后可以操作datatale 或者轉成list也行
21  

 如果還有其他的方法請告知 謝謝!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM