如何使用JSON.Net从C#中的JSON对象创建数组

时间:2016-04-21 03:23:06

标签: c# arrays json json.net

我收到以下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());

我想知道无论在{{"数据":[]}}中发送了多少对role_id和role_name,我如何使用foreach循环或其他方式来实现这一点

3 个答案:

答案 0 :(得分:3)

为什么不将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.
}

答案 1 :(得分:2)

简单。如果使用“动态”,最少的代码行。为:

{  
   "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.
}

答案 2 :(得分:1)

您可以使用for循环遍历JSON,如下所示:

$stateProvider.state('home', {
    url: '/home',
    templateUrl: '/home.html',
    controller: 'MainCtrl',
    reloadOnSearch: false
})