[英]Parsing JSON.Net in C# from web API
我試圖解析從Web API獲得的JSON,但我不知道如何正確地做,我正在學習C#而我正在使用JSON.Net,這是我的JSON:
{
"success": true,
"result": {
"id": "20429683581",
"name": "CINEPLEX S.A",
"Condition": "HABIDO",
"PLE": "02\/01\/2013",
"lawyers": [
{
"type": "DNI",
"numdoc": "07871885",
"name": "PONCE PINTO ALEJANDRO EDUARDO",
"date": "22\/08\/2000"
},
{
"type": "DNI",
"numdoc": "09333203",
"name": "SORIANO BARRANTES JOSE FERNANDO",
"date": "22\/09\/2008"
}
],
"workers": [
{
"time": "2017-07",
"service": "8"
},
{
"time": "2018-06",
"service": "13"
}
]
}
}
在這個例子中,API返回了2名“律師”和2名“工人”,但這個數字可以變化,它們可以獨立地為3或4(json的另一部分保持不變)。 使用PHP我非常清楚如何解決這個問題,但是在C#中我沒有太多的想法,這是我用來解析它的代碼(除了“律師”和“工人”之外我已經解析了......)
public class Lawyer
{
public string type { get; set; }
public string numdoc { get; set; }
public string name { get; set; }
public string date { get; set; }
}
public class Worker
{
public string time { get; set; }
public string service { get; set; }
}
public class Result
{
public string id { get; set; }
public string name { get; set; }
public string Condition { get; set; }
public string PLE { get; set; }
public List<Lawyer> lawyers { get; set; }
public List<Worker> workers { get; set; }
}
public class RootObject
{
public bool success { get; set; }
public Result result { get; set; }
}
RootObject rootobject;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(@"https://www.example.com/api/?get=" + inid);
HttpWebResponse response;
try
{
response = (HttpWebResponse)request.GetResponse();
Stream stream = response.GetResponseStream();
StreamReader reader = new StreamReader(stream);
{
var json = reader.ReadToEnd();
rootobject = JsonConvert.DeserializeObject<RootObject>(json);
}
if (rootobject.success == true)
{
Console.WriteLine("---------------");
Console.WriteLine("ID: " + rootobject.result.id);
Console.WriteLine("NAME: " + rootobject.result.name);
Console.WriteLine("CONDITION: " + rootobject.result.Condition);
Console.WriteLine("PLE: " + rootobject.result.PLE);
}
else
{
Console.WriteLine("---------------");
Console.WriteLine("NOTHING");
}
}
catch (Exception)
{
Console.WriteLine("---------------");
Console.WriteLine("ERROR");
}
我該怎么辦? 我是否必須像PHP一樣使用foreach? 正如我所說,“律師”或“工人”的數量可以變化。
Pd:生成初始用戶類json2csharp.com
從你的評論我可以看出,你已經反序化了這一點。 你只是在遍歷對象模型時遇到了麻煩,這意味着整個json.net的東西都是一個側面軌道,要遍歷,只需做類似的事情
rootobject.result.lawyers.ForEach(lawyer => Console.WriteLine($"{lawyer.name} {lawyer.type}");
或者你可以做
foreach(var lawyer in rootobject.result.lawyers)
{
Console.WriteLine($"{lawyer.name} {lawyer.type}");
}
如果你願意,還可以選擇好的循環
for(int i = 0; i<rootobject.result.lawyers.Count; i++)
{
var lawyer = rootobject.result.lawyers[i];
// print it...
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.