C# 嵌套JSON上的MVC4 Post为空
我目前正在开发一个与MVC4API通信的移动应用程序。 我刚才注意到的问题是,出于某种原因,它似乎无法解析嵌套对象 例如: 我正在向url()发布以下数据: 知道MVC将尝试根据提供的模型对其进行序列化,我为请求创建了以下模型:C# 嵌套JSON上的MVC4 Post为空,c#,asp.net,json,asp.net-mvc,C#,Asp.net,Json,Asp.net Mvc,我目前正在开发一个与MVC4API通信的移动应用程序。 我刚才注意到的问题是,出于某种原因,它似乎无法解析嵌套对象 例如: 我正在向url()发布以下数据: 知道MVC将尝试根据提供的模型对其进行序列化,我为请求创建了以下模型: public class PersonRequest : RequestBase { public class Field { public int fieldId { get; set; }
public class PersonRequest : RequestBase
{
public class Field
{
public int fieldId { get; set; }
public string fieldValue { get; set; }
}
public class Group
{
public int groupId { get; set; }
}
public class Person
{
public string name { get; set; }
public string age { get; set; }
public string dateOfBirth { get; set; }
public IEnumerable<Group> groups { get; set; }
}
public int id { get; set; }
public IEnumerable<Field> dynamic { get; set; }
public Person person { get; set; }
}
以及我的实际路由方法:
[HttpPost]
public ActionResult Generate(PersonRequest request)
{
return Json(request, JsonRequestBehavior.AllowGet);
}
然而,答复是:
{"id":610,"person":null,"dynamic":null}
在寻找一个可能的解决方案后,人们说,在这种情况下,您必须使用IEnumerable,而不是列表。可悲的是,这似乎对我不起作用
只是一些额外的信息: 我总是可以在dataobject person和dynamic上的客户端上使用JSON.stringify,并最终在后端对其进行反序列化(如本主题所示:),但对于这个问题,必须有更好的解决方法
更改:将结果json中的组更改为动态
已解决:为什么要使用IEnumerable,查询将在最后触发, 使用列表和检查
public class PersonRequest : RequestBase
{
public class Field
{
public int fieldId { get; set; }
public string fieldValue { get; set; }
}
public class Group
{
public int groupId { get; set; }
}
public class Person
{
public string name { get; set; }
public string age { get; set; }
public string dateOfBirth { get; set; }
public List<Group> groups { get; set; }
}
public int id { get; set; }
public List<Field> dynamic { get; set; }
public Person person { get; set; }
}
公共类PersonRequest:RequestBase
{
公共类字段
{
public int fieldId{get;set;}
公共字符串字段值{get;set;}
}
公共课组
{
public int groupId{get;set;}
}
公共阶层人士
{
公共字符串名称{get;set;}
公共字符串年龄{get;set;}
公共字符串dateOfBirth{get;set;}
公共列表组{get;set;}
}
公共int id{get;set;}
公共列表动态{get;set;}
公众人物{get;set;}
}
已解决
似乎我的后端设置正确。修复方法是将数据发送到后端的方式
如果要向后端发送嵌套对象,则需要对其进行分析。你必须做两件事:
如何在生成的JSON中设置
组
键?它是否来自RequestBase
类?RequestBase包含一个键“hash”,这就是全部。幸运的是,我已经解决了这个问题。这是我第一个失败的场景,幸运的是我找到了解决方案:)如果你好奇的话,请检查我的其他答案。
{"id":610,"person":null,"dynamic":null}
public class PersonRequest : RequestBase
{
public class Field
{
public int fieldId { get; set; }
public string fieldValue { get; set; }
}
public class Group
{
public int groupId { get; set; }
}
public class Person
{
public string name { get; set; }
public string age { get; set; }
public string dateOfBirth { get; set; }
public List<Group> groups { get; set; }
}
public int id { get; set; }
public List<Field> dynamic { get; set; }
public Person person { get; set; }
}