簡體   English   中英

將 WebResponse 請求中的特定數組解析為數組

[英]Parse specific array from WebResponse request into an array

我有一個外部 API 返回如下響應:

{
  "meta": {
    "year": "...",
    "month": "...",
    "reasons": "...",
    "api_data": "..."
  },
  "results": [
    {
      "name": "David",
      "age": 43
    },
    {
      "name": "Jason",
      "age": 23
    },

    {
      "name": "Nissan",
      "age": 32
    },

    ...

}

我只想解析結果數組,不需要meta屬性。

我創建了一個員工 class:

public class Employee
{
    [JsonProperty("name")]
    public string Name { get; set; }
    [JsonProperty("age")]
    public int Age { get; set; }
}

以及對 API 的請求:

public HttpResponseMessage Get(String reaction)
{
        String apiUrl = "............";

        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(apiUrl);

        WebResponse response = request.GetResponse();
            using (Stream responseStream = response.GetResponseStream())
            {
                StreamReader reader = new StreamReader(responseStream, Encoding.UTF8);
                List<Employee> myObjectList = null;
                var results = reader.ReadToEnd();
                if (results != null)
                {
                    dynamic data = JObject.Parse(results);

                    // manipulate data
                    // The following doesn't work since I've already parsed the data

                    // myObjectList = JsonConvert.DeserializeObject<List<Employee>>(data.results);

                    return Request.CreateResponse(HttpStatusCode.OK, myObjectList);
                }
            }

        return Request.CreateResponse(HttpStatusCode.OK, "");
}

如何將所有results數組直接抓取到 Employee 列表中?

你做對了一切。 只需使用data["results"]而不是data.results

這是供您參考的示例。 使用JObject讀取results數組並使用DeserializeObject將 JArray 轉換為 Object

var json = File.ReadAllText("json1.json");
var jObj = JObject.Parse(json);
var employees = JsonConvert.DeserializeObject<List<Employee>>(jObj["results"].ToString());

我個人建議您:像這樣創建一個 class:

class EmployeRequestResult{
      List<Employee> results;
}

如您所見,您必須以與查詢結果相同的方式調用List<Employe>這里是“結果”

收到回復后,您可以執行以下操作:
var reqResult = new JsonConvert.DeserializeObject<EmployeRequestResult>()要訪問員工數據,您只需執行reqResult.results

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM