如何修复SyntaxError:位于0的JSON中的意外标记b
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何修复SyntaxError:位于0的JSON中的意外标记b相关的知识,希望对你有一定的参考价值。
我想使用Spring MVC从我的后端读取一个电子邮件地址作为字符串。但是,当我尝试使用Angular的HttpClient
读取它时,我收到以下错误:
SyntaxError: Unexpected token b in JSON at position 0 at JSON.parse
这是控制台中显示的错误的屏幕截图:
这是我在Angular中使用的代码来读取响应:
public findEmail(username: string): Observable<string>
let params = new HttpParams();
params = params.append('username', username);
return this.httpClient.get<string>(this.baseUrl + '/findEmail', params);
这是Spring控制器提供响应的代码:
@GetMapping(value = "/findEmail", params = "username" )
public String findEmail(@RequestParam String username)
return utilisateursService.findEmail(username);
答案
您没有JSON响应,您的响应是纯文本(电子邮件地址),可以通过第一个屏幕截图中的错误看到。
当你返回一个字符串时,Spring默认使用StringHttpMessageConverter
,这意味着它只返回字符串并使用text/plain
,例如foo@example.com
。
这意味着响应将不是有效的JSON。要将其转换为有效的JSON,您需要有其他引号,例如"foo@example.com"
。
解决方案是:
- 从您的后端返回JSON响应。这可以通过将响应(电子邮件)包装在类中来完成。一旦您返回对象,Jackson就会将它们序列化为JSON。例如:
@GetMapping public User getUser() // Response will be "email": "foo@example.com" return new User("foo@example.com");
- 或者告诉qazxsw poi使用qazxsw poi选项将响应解释为纯文本。
HttpClient
也提到了这一点:responseType
- 或者从现有转换器中删除the documentation。这将导致转换为杰克逊的回退,这将把响应转换为有效的JSON字符串。可以在
this.httpClient.get<string>('http://example.org', responseType: 'text');
中看到解决方案。 - 或者,您可以在响应中添加其他引号。例如,在Spring控制器中返回
StringHttpMessageConverter
。
另一答案
可能是你没有得到正确的JSON Object.Check一个api响应并验证正确的JSON来自api
以上是关于如何修复SyntaxError:位于0的JSON中的意外标记b的主要内容,如果未能解决你的问题,请参考以下文章
在 JSON.parse 的位置 0 处获取“SyntaxError:”JSON 中的意外标记”
如何在 ionic 3 中使用 ngx-translate 解决“ERROR SyntaxError: Unexpected token / in JSON at position 0”?
SyntaxError:app.js 中位置 0 处 JSON 中的意外标记 C [重复]