[英]Deserializing json array with JSON .net
我有一個 json 字符串,如下所示:
{
"documents": [
{
"name": "20200809/1",
"fields": {
"details": {
"stringValue": "bad"
},
"paid": {
"stringValue": "yes"
}
}
},
{
"name": "20200809/4",
"fields": {
"details": {
"stringValue": "good"
},
"paid": {
"stringValue": "no"
}
}
}
]
}
對我來說重要的字符串是name
、 details
和paid
。 當我從服務器檢索信息時,它就像這樣 json。
我正在使用 JSON .net ( JsonConvert
)反序列化,但我認為我做錯了。 如何從此 json 獲取name
和details
?
List<object> json = JsonConvert.DeserializeObject<List<object>>(jsonString);
Dictionary<string, object> dict = json[0] as Dictionary<string, object>;
//get name
string name = dict["name"] as string;
它給了我:
無法反序列化當前的 JSON object,因為該類型需要 JSON 數組(例如 [1,2,3])才能正確反序列化。
由您的 JSON 表示的完整 object 是一個Dictionary<string, List<Dictionary>>
- 您必須解析整個結構並使用映射/收集循環來獲取您需要的特定鍵,或者可以使用JSON Path
string jsonString = "{'documents':[{'name':'20200809/1','fields':{'details':{'stringValue':'bad'},'paid':{'stringValue':'yes'}}},{'name':'20200809/4','fields':{'details':{'stringValue':'good'},'paid':{'stringValue':'no'}}}]}";
//Note: You must convert to JObject
var jsonObject = JObject.Parse(jsonString);
//Note: And get documents object get zero index and "name" key and fixed!
var jsonMemberName = jsonObject["documents"][0]["name"].ToString();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.