解析值时遇到错误意外字符:。路径'',第 1 行,位置 1

Posted

技术标签:

【中文标题】解析值时遇到错误意外字符:。路径\'\',第 1 行,位置 1【英文标题】: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 属性的对象,而不是字符串。删除 或接受服务器上具有电子邮件属性的对象 【参考方案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)

【讨论】:

以上是关于解析值时遇到错误意外字符:。路径'',第 1 行,位置 1的主要内容,如果未能解决你的问题,请参考以下文章

mobileserviceclient loginasync“解析值时遇到意外字符:

致命错误:在快速 Json 解析中展开可选值时意外发现 nil

解析错误:语法错误,第 26 行 C:\xampp\htdocs\eifel\register.php 中的意外“”[关闭]

从本地 json 文件中获取数据并显示在 html asp.net mvc 中

接收 Json 字符串时出现空数组问题

GraphQLError:语法错误:无法解析意外字符“\u00A0”