Javascript 无法分析有效的JSON
我的api使用PHP Silex发回如下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"}
{"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);