如何使用JSON.Net从C#中的JSON对象创建数组
本文关键字:JSON 对象 创建 中的 数组 何使用 Net | 更新日期: 2024-10-23 08:45:36
我收到以下JSON对象作为服务器对GET请求的响应:
{{ "data": [ { "role_id": "1", "role_name": "Administrator" }, { "role_id": "2", "role_name": "Operator" } ]}}
我正在尝试创建一个"role_id"数组和一个单独的"role_name"数组。然后,我想将"role_name"数组的每个成员添加到一个组合框中。现在我正在使用Newtonsoft.Json.Linq执行以下操作:
JObject par = JObject.Parse(res);
foreach(string s in (string)par["data"]))
{
}
string role = (string)par["data"]["role_id"];
string name = (string)par["data"]["role_name"];
this.cmbRoleID.Items.Add(name.ToString());
我想知道如何使用foreach循环或其他方法来实现这一点,无论在{{"data":[]}}中发送了多少对role_id和role_name。
为什么不将json字符串反序列化为类?创建映射到的JSON结构的类
public class Data
{
public string role_id { get; set; }
public string role_name { get; set; }
}
public class RootObject
{
public List<Data> data { get; set; }
}
然后反序列化它并循环通过,就像通常循环对象数组时一样。
var result = JsonConvert.DeserializeObject<RootObject>(res);
foreach(var item in result.data)
{
//item.role_id, item.role_name
//Your logic here.
}
简单。如果使用"动态",则代码行数最少。用于:
{
"data":[
{
"role_id":"1",
"role_name":"Administrator"
},
{
"role_id":"2",
"role_name":"Operator"
}
]
}
这样做:
dynamic parsedObj = JsonConvert.DeserializeObject(json);
foreach(var child in parsedObj.data)
{
var roleId = child.role_id;
var roleName = child.role_name;
//now do something with them.
}
您可以使用for循环来循环JSON,如下所示:
JObject par = JObject.Parse(res);
foreach(JToken data in par["data"].Children()))
{
string role = data["role_id"].ToString();
string name = data["role_name"].ToString();
this.cmbRoleID.Items.Add(name);
}