【发布时间】:2018-03-09 14:10:11
【问题描述】:
这可能是一种非常罕见的情况,但我最终遇到了问题并且没有找到任何解决方案。
我有一个用 C# 中的 MVC WebAPI 编写的 WebAPI 控制器。我有一个接收自定义对象的 post 方法。
[HttpPost]
public HttpResponseMessage SendEmail([FromBody]Email email)
{
}
下面是Email类,注意EmailData是dynamic类型。
public class Email
{
public string EmailTo { get; set; }
public dynamic EmailData { get; set; }
}
当我发送JSON 有效负载作为帖子时,EmailData 属性会在对象中添加额外的花括号“{}”。这给了我一个问题,因为我的动态数据无法解析带有额外花括号“{}”的JSON。
{
"EmailFrom": "abc.xyz@abc.com",
"EmailData": {
"FirstName": "Rushi",
"LastName": "Joshi"}
}
如果由于dynamic 类型而发生这种情况,那么我不想更改类型,因为我不确定所有键/值请求者可能会发送什么。我正在使用dynamic 数据从中提取数据。
这表明正在解析 EmailData 并添加了额外的花括号。
【问题讨论】:
-
我没有看到任何“额外的大括号”...电子邮件数据是一个对象,正在序列化为 json 作为对象。这就是在 json 中在一组花括号内定义对象的方式。
-
那些不是多余的,它显示的是嵌套的。
-
你有一个 Web API 控制器。 “用 MVC WebAPI 编写”不,它是用 Web API 编写的。本题不涉及MVC。
-
为什么 EmailData 必须是动态的?您可以拥有一个具有可为空字段的类,如果未在 Json 中指定,它们将不会被设置...
标签: c# json asp.net-web-api