0

我在 Dotnet 3.0.103 上。我公开了一个 webapi,它的代码定义如下,

[HttpPost]
        public string Post([FromBody] string data)
        {
            try
            {
            EmployeeRequest request = JsonConvert.DeserializeObject<EmployeeRequest>(data);

现在,当我从邮递员那里调用 API 时,像这样的普通 json 请求正文不起作用

{"EmployeeId": 3, "Name": "John"}

它会抛出这样的错误,

{
    "errors": {
        "": [
            "Unexpected character encountered while parsing value: {. Path '', line 1, position 1."
        ]
    },
    "type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
    "title": "One or more validation errors occurred.",
    "status": 400,
    "traceId": "|b9ea70ff-4ffda7ef1c244839."
}

作为转义字符串而不是 Json 主体可以正常工作,

 "{\"EmployeeId\": 3, \"Name\": \"John\"}"

我想让它只使用一个普通的 json。

任何帮助表示赞赏。

谢谢,阿伦

4

2 回答 2

1

ASP.Net 的模型绑定可以自动将 JSON 有效负载绑定到您的 Action 参数。因此,您应该能够取消手动反序列化:

[HttpPost]
public string Post([FromBody]EmployeeRequest request)
{
    // request should be properly populated
于 2020-04-02T13:05:19.357 回答
0

您不需要单独反序列化 json。.NET 可以开箱即用地为您做到这一点。尝试将签名更改为:public string Post([FromBody] EmployeeRequest data)并从邮递员拨打电话而不转义。它应该工作。

于 2020-04-02T12:59:01.127 回答