发送完整的JSON用asp.net MVC
我想此JSON发送到服务器:发送完整的JSON用asp.net MVC
{
"id":123,
"person": {"name":"john", "surname":"john"},
"qualities": ["gentle", "handsome"],
"friends": [{"name":"sam", "surname":"gamgee"}, {"name":"donald", "surname":"trump"}]
}
因此,所有可能的情况下(正常场,JSON场,场列表和JSON列表字段一个相当完整的JSON )。
我想在我的asp.net mvc服务器上发布这种对象。我发布HTTP头“内容:应用程序/ JSON”,我不想改变。
我尝试了很多东西,但最后总是遇到问题,特别是当我有一个json列表字段时。 为什么这种事情不起作用?
[HttpPost]
public ActionResult SendJson(dynamic json) {
json.friends[0].name --> error
}
当我发送{"json": {#json above#} }
。
使用混凝土类型。
public class Person {
public string name { get; set; }
public string surname { get; set; }
}
public class Friend {
public string name { get; set; }
public string surname { get; set; }
}
public class DataModel {
public int id { get; set; }
public Person person { get; set; }
public IList<string> qualities { get; set; }
public IList<Friend> friends { get; set; }
}
更新控制器以期待强类型。
[HttpPost]
public ActionResult SendJson([FromBody] DataModel model) {
var name = model.friends[0].name;
}
最后发送时,发送所述第一片段为是
{
"id":123,
"person": {"name":"john", "surname":"john"},
"qualities": ["gentle", "handsome"],
"friends": [{"name":"sam", "surname":"gamgee"}, {"name":"donald", "surname":"trump"}]
}
不包裹在另一个对象。否则,你就需要一个额外的对象
public class RootObject {
public DataModel json { get; set; }
}
符合此{"json": {#json above#} }
我很确定它的工作原理。但是你一定明白,我无法为我的所有请求创建数百个模型...... – fazega
@fazega最终它会让你受益。创建数百个模型然后必须为每个模型解决问题更快。您可以使用像automapper这样的工具来映射这些字段,尽管我从未使用它。 –
你可以试试json.json.friends [0] .name?好奇,如果它只是一个关于如何将JSON作为另一个json中的对象传递的问题。 –
不工作。其实不包围它的“json”字段不起作用,因为asp.net似乎直接解析发送的json,因此参数是json字段。 – fazega
json.json.friends [0] .name - 作品,有什么麻烦吗? – Immanuel