如何在 .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。我看到了正确的结果。
我已经通过 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。我看到了正确的结果。