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

How can I loop Json with dynamic type in .netcore 1.1?

我已经通过 Postman 传递了 Json 对象。而且我不知道如何使用 .NetCore 1.1 Web 服务循环它。

Json Postman传递的对象:

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

.net 核心 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...
  }
}

根对象:

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

我得到以下错误:

System.ArgumentNullException: Value cannot be null.\r\nParameter name: value\r\n at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings)\r\n at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings)\r\n at CallSite.Target(Closure , CallSite , Type , Object )\r\n

也许您的 json 是 invalid.Change 您的 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 class 需要 Public:

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

使用邮递员将字符串放入 Content-Type:application/json。我看到了正确的结果。