解析值时遇到错误意外字符:。路径'',第 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 中的意外“”[关闭]