Javascript 无法分析有效的JSON

Javascript 无法分析有效的JSON,javascript,php,json,typescript,silex,Javascript,Php,Json,Typescript,Silex,我的api使用PHP Silex发回如下JSON响应: {"response":true,"message":"Bla","userId":"AAA"} 但我无法在我的打字脚本前端解析它 this.authService.login(body).then((result : any) => { console.log(result.data); // => {"response":true,"message":"Bla","userId":"AAA"}

我的api使用PHP Silex发回如下JSON响应:

{"response":true,"message":"Bla","userId":"AAA"}
但我无法在我的打字脚本前端解析它

this.authService.login(body).then((result : any)  => {
    console.log(result.data); // => {"response":true,"message":"Bla","userId":"AAA"}         
    let parsed = JSON.parse(result.data);
    console.log(parsed.message); // => throws  "SyntaxError: Unexpected token in JSON at position 0\n at JSON.parse (<anonymous>)
当尝试将json对象硬编码为代码时,它会解析

更新解决方案
我不得不对result.data使用trim()来删除空格,somehome的响应带有空格,JSON不喜欢这样。谢谢大家的帮助。

您的PHP代码中可能有一个
\u0000
字符

从PHP获取JSON字符串后,请尝试将其删除:

this.authService.login(body).then((result : any)  => {
    string = result.data.replace("\u0000", "");
    string = string.replace("\\u0000", "");
    let parsed = JSON.parse(string);

解决方案


我使用result.data.trim()使其工作,不知怎么的,响应有空格,JSON不喜欢这样

它可能是一个空格use trim()
console.log(typeof result.data)
?@DieterKräutl但JSON标记之间允许空白。似乎数据已经被解析。
console.log(result.data.message)
显示了什么?为什么双重替换?根据OP的控制台输出,他们的数据中显然没有文本字符串
\u0000
。然而,一个实际的空字符(或其他一些不可见的控制字符)是很有可能的。实际上,您最好确保服务器的输出是干净的(API输出),而不是使用最终结果清理器。
this.authService.login(body).then((result : any)  => {
    string = result.data.replace("\u0000", "");
    string = string.replace("\\u0000", "");
    let parsed = JSON.parse(string);