c# - 如何在 .netcore 1.1 中循环使用动态类型的 Json?
问题描述
我已经通过 Postman 传递了 Json 对象。而且我不知道如何使用 .NetCore 1.1 Web 服务循环它。
Postman 传递的 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...
}
}
根对象:
private class RootObject
{
public string id { get; set; }
public string name { get; set; }
}
我在下面得到错误:
System.ArgumentNullException: 值不能为空。\r\n参数名称: 值\r\n 在 Newtonsoft.Json.JsonConvert.DeserializeObject(字符串值,类型类型,JsonSerializerSettings 设置)\r\n 在 Newtonsoft.Json.JsonConvert.DeserializeObject [T](字符串值,JsonSerializerSettings 设置)\r\n 在 CallSite.Target(Closure , CallSite , Type , Object )\r\n
解决方案
也许您的 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 中使用 postman put 字符串。我看到了正确的结果。
推荐阅读
- python - 如何为以下游戏添加“重玩”选项
- javascript - 页面重新加载后用户投票时保持按钮禁用
- c# - 寻找一些用于研发的术语
- amazon-web-services - Elastic Beanstalk 未创建 ssl.conf
- sql - 从 Postgres 记录中的行中获取最大值并按多列分组
- swift - TableViewCell 作为代表没有收到任何东西
- python - 如何过滤字典并将值存储在列表中?
- javascript - 当我的机器人在所有不和谐的服务器上联机时,如何发送启动消息。吗?
- python - Python 字符串到 shellcode 字节
- python - 如何用循环求解这个方程?