C 獲取動態key的json物件的值案例

2021-10-20 18:30:30 字數 2567 閱讀 4639

問題描述

如果直接獲取某個json陣列中的元素將得到如下的json

}

這個json物件如果使用c#類來反序列化,那麼實體類的結構如下,實體類的類名需要與json物件key相同的才可以使用json反序列化,這樣對程式造成了極大的不便。

public

class

44public

get;

set;

}public

int length

public

string order

public

int vanished

public

int weight

}public

class

root

}

解決方案

以上json物件由於key是動態的無法使用c#反序列化,但是直接取到value就能序列化了,如下。

以上json物件就可以使用我們常用的格式轉換了。

public

class

root

public

get;

set;

}public

int length

public

string order

public

int vanished

public

int weight

}

實現**

從動態key的json物件裡面拿到value那部分,可以反序列化的字串,請使用如下的函式,注意引入類庫。

using newtonsoft.json;

using newtonsoft.json.linq;

using system.linq;

/// 

/// 本類用於處理動態key的json物件

///

/// 需要處理的json物件

/// json物件的第乙個元素的values

public

static

string

getjsonvalue

(string strjson)

else

return strresult;

}

補充:c# 獲取json字串中指定key的值

背景從markdown系統api介面獲取到json格式資料,json字串c#教程是不規範的或者說是很難以獲取doc_id欄位(位於樹的葉子節點,但是卻不知道有多少個枝幹節點),這時想到了採用正規表示式獲取指定key的值,於是產生了這篇文章。

適用場景

不想要解析整個json字串,只想獲取其中某個key的值

json字串對應的物件比較難以構造,只需要獲取其中某幾個key的值

json字串不規範,只需要獲取指定key的值(特別是有一些是陣列物件,有一些是非資料物件)

**

/// 

/// 獲取json字串中指定key的值

///

///

///

///

public list

getjsonvalue

(string jsonstring,

string key)

\":\"(.*?)\\\""

;matchcollection matches = regex.

matches

(jsonstring, pattern, regexoptions.ignorecase)

; list<

string

> lst =

newlist

<

string

>()

;foreach

(match m in matches)

return lst;

}///

/// 獲取json字串中指定key的值

///

///

///

///

public list

getjsonvalue

(string jsonstring,

string key)

\":\"(.*?)\\\""

;matchcollection matches = regex.

matches

(jsonstring, pattern, regexoptions.ignorecase)

; list<

string

> lst =

newlist

<

string

>()

;foreach

(match m in matches)

return lst;

}

以上為個人經驗,希望能給大家乙個參考,也希望大python基礎教程家多多支援指令碼之家。如有錯誤或未考慮完全的地方,望不吝賜教。

安卓獲取解析json動態獲取key

貼一下服務端返回的接送資料 前面的版本 顏色都會後台返回的,也就是這是可變的規格,不能根據平時gson解析資料那樣使用了,平時是寫實體類,一行gson解析就可以了。現在因為規格是可變的,需要動態的獲取並改變key的值。代表一組有序的數值 乙個json物件 下面就是我的解析步驟 jsonobject ...

JSON解析動態key

工作中後台給我傳了帶動態的key的json報文的資料,由於沒有弄過 key後面需要的 success 1 就是上面這樣的,沒有接觸過,查資料,幸虧網上有資料,記錄一下。可以通過jsonobject 的keys 方法獲得乙個迭代器,然後遍歷所有的key,keys方法返回乙個iterator物件,它有h...

獲取物件的key和value

1 object.keys es5 引入了object.keys方法,返回乙個陣列,成員是引數物件自身的 不含繼承的 所有可遍歷 enumerable 屬性的鍵名。var obj object.keys obj foo baz 目前,es7 有乙個提案,引入了跟object.keys配套的objec...