收藏
回答

JSON不能解析问题,紧急,求助?

问题模块
API和组件


报错:

at api request success callback function

SyntaxError: Unexpected token  in JSON at position 0


php后台返回数据:

echo json_encode($response); //跟以往并没有任何区别


小程序请求并解析:



报错:



看到帖子有人回复说是bom头问题,

那么请问下,bom头问题怎么解决,是后台解决呢,还是小程序解决呢?


如果是后台解决,我尝试过以下两种方案:

1,

$result = trim($result, "\xEF\xBB\xBF");
print_r(json_decode($result, true));
exit;


2,

$result = @iconv("UTF-8", "GBK//IGNORE", $result);
$result = @iconv("GBK", "UTF-8//IGNORE", $result);
print_r(json_decode($result, true));

exit;

然而都没有生效,实在没办法,在此求助。。。


另外,附加一个问题:

同样是wx.request,同样是php后台返回的json_encode(),在小程序端拿到的response.data,有时候是个string,有时候是个object????

我敢打赌,代码绝笔是一样的用法。


这是断点调试看到的数据:


"{"openGId":"tG4E0P0eBR4VolcGbP-v2lkpdgYB8","watermark":{"timestamp":1503802802,"appid":"wx3b2ac4c74d0ea730"}}"


看着好像都是双引号,不知道有没有问题;如果有的话,怎么解决呢?

大神们看看有没有问题。



最后一次编辑于  2017-08-27  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏投诉关注问题回答

14 个回答

  • GODOG
    GODOG
    2017-08-26

    返回的数据本身就已经解析过了,再用JSON.parse就会报错 ,你直接输出console.log(response.data)看看

    2017-08-26
    赞同
    回复
  • 影楼云选片 2019跨平台在线选片
    影楼云选片 2019跨平台在线选片
    2017-08-26

    这里我回复过,我就是这样解决的。

    2017-08-26
    赞同
    回复
  • 影楼云选片 2019跨平台在线选片
    影楼云选片 2019跨平台在线选片
    2017-08-26

    而且如1楼所说,不用再JSON.parse了。

    2017-08-26
    赞同
    回复
  • yuhao
    yuhao
    2017-08-27

    我敢保证你的json数据 有问题的数据,或者格式,或者内容。

    2017-08-27
    赞同
    回复
  • 江湖坤哥
    江湖坤哥
    2017-08-27

    "{"openGId":"tG4E0P0eBR4VolcGbP-v2lkpdgYB8","watermark":{"timestamp":1503802802,"appid":"wx3b2ac4c74d0ea730"}}"

    这是返回的json数据,好像是没有问题的。

    dom头的问题我也php处理过,好像没啥用。



    2017-08-27
    赞同
    回复
  • GODOG
    GODOG
    2017-08-27


    帮你测试了一下,如果你传回来的数据,最外面是有双引号的话,就无法转成JSON。

    如果是:{"openGId":"tG4E0P0eBR4VolcGbP-v2lkpdgYB8","watermark":{"timestamp":1503802802,"appid":"wx3b2ac4c74d0ea730"}} 就是成功的,所以你再看下你回传的数据内容

    2017-08-27
    赞同
    回复
  • GODOG
    GODOG
    2017-08-27

    我也试过经常出现这样的问题,很多时候就是因为String的JSON格式不对,所以导致String无法解析成JSON

    2017-08-27
    赞同
    回复
  • 江湖坤哥
    江湖坤哥
    2017-08-27

    谢谢你。可是这个双引号不是我控制的。

    我php后台给一个对一个array数据,进行了json_encode(array),返回给我的数据。。。。

    不知道哪里会有什么问题

    2017-08-27
    赞同
    回复
  • 影楼云选片 2019跨平台在线选片
    影楼云选片 2019跨平台在线选片
    2017-08-27

    我都是用json_encode,都没报错,你处理了所有的文件bom头了吗?包括引用的文件也要处理,只要引用的文件其中一个有bom头都会出问题的。

    2017-08-27
    赞同
    回复
  • 影楼云选片 2019跨平台在线选片
    影楼云选片 2019跨平台在线选片
    2017-08-27

    官方提供的解密例子是有bom头的,这也是我经历过的,如果你用到了官方的解密例子,把每个用到的php文件处理一下bom头就行了。

    2017-08-27
    赞同
    回复