[英]How to parse a FORM from WebResponse into a POST body of a WebRequest
[英]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.