【问题标题】:Getting error unexpected character encountered while parsing value: . Path '', line 1, position 1解析值时遇到错误意外字符:。路径'',第 1 行,位置 1
【发布时间】:2020-01-15 02:12:17
【问题描述】:

我有一个 ASP.Net Core 2.1 应用程序。我遇到了与以下 SO 链接中提到的相同的错误。

Unexpected character encountered while parsing value: . Path '', line 1, position 1

答案部分中建议的解决方案似乎也可以解决问题。

但是为一个属性创建一个类是开销并且对我没有吸引力。

过去,我在没有使用 .Net Framework 4.5(+) 创建这样的开销类的情况下做了同样的事情

// POST api/values
[HttpPost]
public void Post([FromBody]string email)
{
}

通过邮递员,我发布

{
    "email": "myemail@email.com"
}

如何在不创建任何类或 这样?

我更喜欢使用 [FromBody],因为我的应用程序中的所有 API 都接受 Post 方法中的参数 FromBody

【问题讨论】:

  • 这是一个具有email 属性的对象,而不是字符串。删除{} 或接受服务器上具有电子邮件属性的对象

标签: c# asp.net-core postman asp.net-core-webapi asp.net-core-2.1


【解决方案1】:

如果你想在不创建类的情况下传递电子邮件值,只需传递

"myemail@email.com"

没有{} 括号和email 键。当你通过时

{
"email": "myemail@email.com"
}

解析器正确地表明该值表示具有属性email 的对象,这就是需要包装类的原因。

【讨论】:

    【解决方案2】:

    如果您知道自己永远需要一个参数,那么请按照其他人的建议将其设为字符串。但请记住,您将无法从 ASP.NET Core 中的主体接收两个参数:您必须定义一个包含两个(或更多)属性的类型,并且请求主体中的单个对象将被映射到那种。因此,如果您不确定,只需为您自己的请求保存未来的重构并定义类型

    不要害怕在你的项目中再创建一个类。这对机器来说是非常小的开销,对你花三分钟编写它来说是微不足道的烦恼,但它改进了代码的质量,使其更具表现力,它甚至可以通过让编译器发现你可能没有注意到的错误来帮助你。只需给它起一个有意义的名称,就可以了。

    【讨论】:

      【解决方案3】:

      你可以简单地输入一个没有密钥的字符串,api仍然会接受它:

      "myemail@email.com"
      

      【讨论】:

        【解决方案4】:

        您可能需要调用 JSON.stringify(email) 将电子邮件传递给 api,并将内容类型作为标题传递。这就是我解决问题的方法:

        post(id: number, email: string): Observable<any> {
            const httpOptions = {
              headers: new HttpHeaders({'Content-Type': 'application/json'})
            };
            const url = this.baseUrl + `api/Portfolio/InviteUser/${id}`;
            return this.http.post<any>(url, JSON.stringify(email), httpOptions);
          }
        

        我的 Web Api 在 URI 中还包含一个 Id:

        [HttpPost("[action]/{id}")]
        public async Task<ActionResult<Response>> InviteUser(int id, [FromBody] string email)
        

        【讨论】:

          猜你喜欢
          • 2019-12-31
          • 2020-11-26
          • 1970-01-01
          • 2018-07-25
          • 2015-05-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多