zoukankan      html  css  js  c++  java
  • 字符串数组转化成json格式

    本来这个问题应该很简单的,直接用json_decode()函数来转换,问题就出在,转换出来是NULL,我在服务器获取手机端传过来的json格式的参数,在传递过程中,“被替换成了" ,我在网上找了个替换特殊字符的函数,我把函数贴一下:

    转自http://hi.baidu.com/doujikai/item/e6eae5fd08c2c318a7298842

    function dhtmlspecialchars($string) {
        if(is_array($string)) {
            foreach($string as $key => $val) {
                $string[$key] = dhtmlspecialchars($val);
            }
        } else {
            $string = preg_replace('/&((#(d{3,5}|x[a-fA-F0-9]{4})|[a-zA-Z][a-z0-9]{2,5});)/', '&\1',
                str_replace(array('&', '"', '<', '>'), array('&amp;', '&quot;', '&lt;', '&gt;'), $string));
        }
        return $string;
    }

    我的字符串是$data="{&quot;age&quot;:&quot;19&quot;,&quot;name&quot;:&quot;MIle&quot;,&quot;sex&quot;:&quot;male&quot;}"

    我用这个函数转了之后得到的数据是{"age":"19","name":"MIle","sex":"male"},的确是没错,但是发现不能用json_decode(),而我自己定义了一个字符串为{"age":"19","name":"MIle","sex":"male"},就能用json_decode(),一样一样的,确不能用,百思不得其解啊,到网上找了一下,这个是解决方案:

    转自http://www.nginx.cn/337.html

    php5.2以后自带json_decode函数,但是对json文本串的格式要求非常严格。

    很可能使用该函数得到的返回值是NULL

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

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

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

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

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

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

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

    我先用var_dump()函数打印了一下两个变量,发现字符数不对,用函数转换了的字符是99个,我自己定义的是39个,我初学,没仔细看那个转换函数不明白为什么,所以就不用他的函数,自己用$re1 = str_replace("&quot;", '"', $data);替换了一下,就成功了。

    另外附上json_last_error()函数说明的链接http://www.php.net.cn/help/json/json_last_error/

  • 相关阅读:
    <!--[if IE 9]>....<!end if-->
    背景颜色设置
    UIImageView 响应UIButton的点击事件
    响应键盘return事件
    iOS 封装数据请求,解析数据(异步)
    UIImageView 圆角
    JS 控制文本框必须输入值才能查询
    MVC4 @Html.Raw()
    JS加成显示
    随机生成人物名称
  • 原文地址:https://www.cnblogs.com/cyn126/p/3339495.html
Copyright © 2011-2022 走看看