这个问题对你来说很容易,但我无法在任何地方找到解决方案,我也在搜索过SO。如何将对象内的对象集合发送到C#API方法,这是我尝试发送的代码
{
"Question":"sdvsdv",
"PollQuestions":
[
{
"QuestionText":"Question Text"
}
]
}
我也尝试过使用Advanced REST客户端(不仅来自JS),我可以看到父对象参数的值,但PollQuestions对象参数都是空的。
请建议一个解决方案。这是几天,我无法通过它。提前致谢。
编辑:
民意调查是一个简单的类,如下所示:
[Serializable]
[DataContract(Namespace = "")]
public class Poll
{
[DataMember]
public string Question
{
get;
set;
}
[DataMember]
public Collection<PollQuestion> PollQuestions { get; set; }
}
PollQuestion对象:
[Serializable]
public class PollQuestion : AnotherClass
{
public string QuestionText
{
get;
set;
}
}
在您的情况下,如果问题是在C#
中映射请求JSON,请尝试下面的代码:
班级结构:
public class PollQuestion
{
public string QuestionText { get; set; }
}
public class RootObject
{
public string Question { get; set; }
public List<PollQuestion> PollQuestions { get; set; }
}
在Post
中使用[FromBody]
属性将JSON映射到C#类:
public void YourMethod([FromBody] RootObject data)
{
// your code to use request data
}
如果您使用的是Web API qazxsw poi(或者也可能在较低版本中受支持),则无需将请求的JSON序列化为C#类。使用qazxsw poi为version="5.2.3"
生成this类。
对于JSON结构C#
对待,
这个:
JSON
作为C#
和
这个:
{
}
到Object
或[]
。
我在List<>
中设置了一个简单的示例项目,它似乎对我的JSON数据工作正常。
这些是我使用的类:
Array
这是API调用函数:
.NET Core
当我发出邮递员请求时,Poll类按预期填充。
这里也是我的示例项目的链接:public class PollQuestion
{
public string QuestionText { get; set; }
}
public class Poll
{
public string Question { get; set; }
public List<PollQuestion> PollQuestions { get; set; }
}
你可以改变你的项目中的模型以匹配我的模型,看看它是否有效?我的猜测是你的模型不正确,因为JSON请求也适用于我。如果它不起作用,你可以上传一个示例项目,以便我可以看看我是否可以修改它工作?
我继承了一个使用[DataContract]和[DataMember]属性的类,所以我不得不将DataMember用于子类的所有参数。
感谢大家的答案,但当参数是复杂类型时,API方法不需要[FromBody]。
如果你没有在类中的任何地方使用DataMember,也没有继承使用它的任何类,它也可以在没有DataContract和DataMember的情况下工作。
您可以在这里获得更多信息: [HttpPost]
public void Post([FromBody]Poll value)
{
}