[英]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.