簡體   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