問題描述
如果直接獲取某個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...