无法解析有效的JSON

问题描述 投票:5回答:2

我的api使用PHP Silex发送回这样的JSON响应:

{"response":true,"message":"Bla","userId":"AAA"}

但我不能在我的Typescript前端解析它

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>)

我的PHP端点使用PHP和Silex Framework:

$app->post('/user/login', function (Request $request) use ($app, $config) {
    $email = $request->request->get('user-email');
    $password = $request->request->get('user-password');
    $rsp = loginUser($email,$password);
    return $app->json($rsp);
});

当尝试将json对象硬编码为代码时,它会解析!

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

javascript php json typescript silex
2个回答
3
投票

我使用result.data.trim()来工作,不知何故响应有空格而JSON不喜欢它。


1
投票

你可能在PHP代码的某个地方有一个\u0000 char。

从PHP获取后,尝试从JSON字符串中删除这些字符:

this.authService.login(body).then((result : any)  => {
    string = result.data.replace("\u0000", "");
    string = string.replace("\\u0000", "");
    let parsed = JSON.parse(string);
© www.soinside.com 2019 - 2024. All rights reserved.