繁体   English   中英

使用 JSON Z2D50972FECD376129545507F1062089Z 反序列化 json 阵列

[英]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"
        }
      }
    }
  ]
}

对我来说重要的字符串是namedetailspaid 当我从服务器检索信息时,它就像这样 json。

我正在使用 JSON .net ( JsonConvert )反序列化,但我认为我做错了。 如何从此 json 获取namedetails

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM