![](/img/trans.png)
[英]How do I get the key and it's object from a JSON file in c# using JSON.net?
[英]How do I get a property from a list when parsing JSON in C# with JSON.NET?
我可以使用帶有此C#代碼的JSON.NET解析簡單屬性:
代碼C#
WebClient c = new WebClient();
var data = c.DownloadString("http://localhost/json1.json");
JObject o = JObject.Parse(data);
listBox1.Items.Add(o["name"]);
listBox1.Items.Add(o["email"][0]);
listBox1.Items.Add(o["email"][1]);
listBox1.Items.Add(o["website"]["blog"]);
json1.json
{
"name": "Fname Lname",
"email": [
"email@gmail.com",
"email@hotmail.com"
],
"website":
{
"blog": "example.com"
}
}
json2.json
{
"name": "Fname Lname",
"email": [
"email@gmail.com",
"email@hotmail.com"
],
"website":
{
"blog": "example.com"
},
"faculty":
{
"department": [
{
"name": "department.name",
"location": "department.location"
}
]
}
}
從第二個JSON文件中,我無法從部門獲得名稱和位置。 如何在C#中做到這一點?
您的問題是, department
是一個對象數組(盡管這里碰巧只包含一個項目),但是您卻無法像這樣訪問它。 您可以使用o["faculty"]["department"][0]["name"]
來獲取數據。
您可能希望使用類(這里是通過http://json2csharp.com/自動轉換的類)來更輕松地處理數據。
public class Website
{
public string blog { get; set; }
}
public class Department
{
public string name { get; set; }
public string location { get; set; }
}
public class Faculty
{
public List<Department> department { get; set; }
}
public class RootObject
{
public string name { get; set; }
public List<string> email { get; set; }
public Website website { get; set; }
public Faculty faculty { get; set; }
}
然后,您可以使用以下代碼獲取所有數據(而不是希望固定索引正確,並且沒有在屬性名稱中輸入錯誤):
WebClient c = new WebClient();
var data = c.DownloadString("http://localhost/json1.json");
var o = JsonConvert.DeserializeObject<RootObject>(data);
listBox1.Items.Add(o.name);
foreach (var emailAddr in o.email)
listBox1.Items.Add(emailAddr);
listBox1.Items.Add(o.website.blog);
foreach (var dept in o.faculty.department)
{
listBox1.Items.Add(dept.name);
listBox1.Items.Add(dept.location);
}
yourjsonobject.faculty.department[0].name;
yourjsonobject.faculty.department[0].location;
這是一些jsfiddle可以幫助您解決這個問題:
var r = JSON.parse('{"name": "Fname Lname","email": [ "email@gmail.com", "email@hotmail.com"],"website":{ "blog": "example.com"},"faculty":{ "department": [ { "name": "department.name", "location": "department.location" } ]}}');
alert(r.faculty.department[0].name);
alert(r.faculty.department[0].location);
for (var i = 0; i < r.faculty.department.length; i++) {
alert(r.faculty.department[i].name);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.