zoukankan      html  css  js  c++  java
  • PHP

    碰到了PHP json_decode returns NULL, 肿么办?

    1. google 一下, 关键字:PHP json_decode NULL

    首先你能看到我这个这个帖子:)

    http://www.cnblogs.com/shgq/admin/EditPosts.aspx?opt=1

    2. 使用json_last_error()函数获取到的返回值来帮助我们判断出问题的原因。

    其中如果提示错误JSON_ERROR_SYNTAX(Syntax error),表示json串格式错误。

    可以通过以下几个方式排错:

    a. json字符串必须以双引号包含

    $output = str_replace("'", '"', $output);

    b json字符串必须是utf8编码
    $output = iconv('gbk', 'utf8', $output);

    c.不能有多余的逗号 如:[1,2,]
    用正则替换掉,preg_replace('/,s*([]}])/m', '$1', $output)

    3. 我用UTF-8的php写了一个接口,调用时字符串tace出来也正常。

    比较了json_decode 前字符串的长度,字符串比想要的多出了6个字符。

    分别是239,187,191,239,187,191

    有文章说会多3个字符,是DOM的标志。DOM是什么不解释,自己google去。

    我的程序多出6个字符,实践才是真道理啊。

    4. 解决办法一:调用接口的地方预处理一下:substr($str,6)

    5.如果每次都预处理,太烦,有没有更方便的办法了从源上解决问题了?

    解决办法2: 我用nodepad++把该文件保存成UTF-8 without DOM,搞定。

    再也不用担心null问题了。

  • 相关阅读:
    SpringBoot-10-之初阶整合篇(下)
    09--SpringBoot之初阶整合篇(上)
    07--SpringBoot之数据库JPA(CRUD)
    go 文件操作 io
    类型断言
    多态
    golang interface
    go strcut 封装
    go struct 抽象
    poj-3280 Cheapest Palindrome (dp)
  • 原文地址:https://www.cnblogs.com/shgq/p/3460115.html
Copyright © 2011-2022 走看看