如何在.netcore 1.1中使用动态类型循环Json?

时间:2019-05-06 02:43:22

标签: c# json asp.net-core asp.net-core-webapi json-deserialization

我已经通过邮递员传递了Json对象。而且我不知道如何使用.NetCore 1.1 Web Service进行循环。

邮递员传递的Json对象:

{
 [
  {"id":"1","name":"Peter"}
  ,
  {"id":"2","name":"Mary"}
 ]
}

.net core 1.1编码:

[HttpPut]
[Route("all")]
public IActionResult UpdateName([FromBody] dynamic JSON){
  var RootObjects = JsonConvert.DeserializeObject<List<RootObject>>(JSON);
  foreach (var x in RootObjects){
   // do something here...
  }
}

RootObjects:

private class RootObject
{
    public string id { get; set; }
    public string name { get; set; }
}

我在下面看到错误:

  

System.ArgumentNullException:值不能为null。\ r \ n参数名称:Newtonsoft.Json.JsonConvert.DeserializeObject(字符串值,类型类型,JsonSerializerSettings设置)的值\ r \ n,Newtonsoft.Json的值。 JsonConvert.DeserializeObject [T](String value,JsonSerializerSettings settings)\ r \ n在CallSite.Target(Closure,CallSite,Type,Object)\ r \ n

1 个答案:

答案 0 :(得分:1)

也许您的json无效。将json字符串更改为:

 [
  {"id":"1","name":"Peter"},
  {"id":"2","name":"Mary"}
 ]

并将您的控制器操作更改为:

   [HttpPut]
    public IActionResult Test([FromBody] List<RootObject> list)
    {
        foreach (var item in list)
        {
            Console.WriteLine(item.name);
        }

        return Json("ok");
    }

RootObject类也需要公开:

     public class RootObject
     {
       public string id { get; set; }
       public string name { get; set; }
     }

在Content-Type:application / json中使用邮递员放置的字符串。而且我看到了正确的结果。