{'state' : 1,'data':{'list':[{'id': 123, 'name': '諸葛天邪','level': 10,'country': 1,}]}}比如我要獲取里面的 id 該如何實現。
首先這個json串有幾個錯誤的地方
第一個非常重要的錯誤,json串里面只能用雙引號,不能用單引號,這個單雙引號表示的意思不是引號內是字符串,而是json的規定
第二個錯誤,json串內的逗號只能用英文的,不能用中文的
第三個錯誤,country之后的那個逗號去掉
再來說轉換問題
最簡單的方式是使用.net內置的JavascriptSerializer類,如圖所示
其中,JavaScriptSerializer.DeserializeObject轉換json串為object對象
如果這個json串以大括號包裹,這個object對象的實際類型就為Dictionary<string,object>
如果以中括號包裹,實際類型就為object[],而其中的object又為Dictionary<string,object>
所以如圖,就有很多次的轉換才能最終獲取id
推薦使用JavaScriptSerializer.Deserialize方法以及創建實體來解析json,就不需要多次轉換
具體做法請自行百度"JavaScriptSerializer"
這個錯誤說明你json串格式出錯字符串錯了。不過我現在不能用JavaScriptSerializer對象,現在服務器的.NetFrameWork是2.0的所以不支持。 我現在就換成用 Newtonsoft.Json.dll 這個程序集,但是在運行的時候出了個問題。不斷提示未將對象引用到實例,。
這是我現在的代碼,我用了Newtonsoft.Json.dll 轉換的時候獲得了對象里面有值。((((rusult as Dictionary<string, object>)["data"] as Dictionary<strin...就是在這條報的異常,
如果您要用Newtonsoft.Json.dll進行轉換,這個和微軟提供的JavaScriptSerializer的用法肯定是不一樣的所以不能通過原先我寫的那樣去獲取要像如圖獲取,附帶Newtonsoft.Json官方文檔中Linq to json的例子:
樓上的兄弟說得很透徹,不過json似乎沒有規定必須要雙引號哦,只要格式統一即可,不能雙引號單引號一起出現。這個dll你用對沒有啊,最好去查下資料文檔。網絡粘貼,勉強看吧
新聞熱點
疑難解答