當前位置: 妍妍網 > 碼農

C# 解析key值動態的json數據

2024-03-31碼農

背景

之前在對接第三方的api的時候,對方給的數據格式是這樣的json

就是沒有欄位內容這一說 ,都是數據,而且格式還是不固定的。

第一眼看到這東西,心裏第一反應是想罵人,但是沒辦法,睡覺人家是大爺。

那就的想辦法解析成我們看得懂的數據。

思路

仔細觀察發現,鍵值對的規律是第一個欄位是string 型別,但是第二個是物件型別。加上沒有欄位名稱。所以第一想到的是Dictionary。

下面看下Dictionary特性
必須包含名空間System.Collection.Generic
Dictionary裏面的每一個元素都是一個鍵值對(由二個元素組成:鍵和值)
鍵必須是唯一的,而值不需要唯一的
鍵和值都可以是任何型別(比如:string, int, 自訂型別,等等)
透過一個鍵讀取一個值的時間是接近O(1)
鍵值對之間的偏序可以不定義

所以對應的c# 型別是 Dictionary< string , dynamic >>

眼見為實,那麽接下來我們來驗證下是否可行。

1、nuget參照  using Newtonsoft.Json ;

2、準備一段數據

{"r545454aa":"gfgf方(rttr)","111":"機trtrrt","rrr":"2022-02-11","tt":["ghhg","nbbn" ],"545454":"fdfdfd"}

3、解析 Jso nConvert. DeserializeObject <Dictionary< string , dynamic >>

privatestringConvertjson(string jsonStr) {var model = JsonConvert.DeserializeObject<Dictionary<string, dynamic>>(jsonStr); List<QAModel> list = new List<QAModel>();foreach (var item in model) { 。。。。。。。。。。。。 } }

4、到這裏我們測試發現,數據正常解析了,接下來我們就是對 dynamic 進行再次解析了。

if (item.Value is string) {Text = item.Value; }else { 。。。。。。。。。。。。。 }

到此,問題解決。