【问题标题】:JSON result formatting errorJSON结果格式错误
【发布时间】:2014-03-04 12:09:23
【问题描述】:

我的 JSON 值是这样的 -

$arr2 = array('dn'=>'NR/2014/02/1257','dd'=>'1393934346');
$arr=array('id'=>'123456','fname'=>'ABC','lname'=>'XYZ','dt'=>array($arr2));
$json = json_encode($arr));

结果 -

{
  "id":"123456","fname":"ABC","lname":"XYZ",
  "dt":[
          {"dn":"NR\/2014\/02\/1257","dd":1393934346}
       ]
}

其中dn 的值为NR\/2014\/02\/1257,但我希望dn 的值为NR/2014/02/1257,这与我的真实dn 值相同。

谁能帮帮我???

【问题讨论】:

    标签: php arrays json function escaping


    【解决方案1】:

    您应该使用JSON_UNESCAPED_SLASHES 作为json_encode() 函数的参数。自 PHP 5.4.0 起可用。

    <?php
    $arr2 = array('dn'=>'NR/2014/02/1257','dd'=>'1393934346');
    $arr=array('id'=>'123456','fname'=>'ABC','lname'=>'XYZ','dt'=>array($arr2));
    
    echo $json = json_encode($arr,JSON_UNESCAPED_SLASHES);
    

    OUTPUT :

    {"id":"123456","fname":"ABC","lname":"XYZ","dt":[{"dn":"NR/2014/02/1257","dd":"1393934346"}]}
    

    Demo


    PHP 版本低于 5.4.0,不支持 JSON_UNESCAPED_SLASHES,只需简单地替换反斜杠即可。

    echo $json = str_replace('\\','',json_encode($arr));
    

    【讨论】:

    • 感谢您的帮助,但是当我将 JSON_UNESCAPED_SLASHES 与 json 编码方法一起使用时,它不起作用...为什么???
    • 查看答案中的演示,它可以按照您的期望工作。顺便说一句,您使用的是哪个版本的 PHP?
    • 只需替换 echo $json = str_replace('\\','',json_encode($arr)); 因为 JSON_UNESCAPED_SLASHES 适用于 >= 5.4 以上的版本
    【解决方案2】:

    使用json_encode()函数时可以设置JSON_UNESCAPED_SLASHES参数(PHP版本必须>= 5.4)。

    但字符串"NR\/2014\/02\/1257""NR/2014/02/1257"完全相同,所以JSON_UNESCAPED_SLASHES不是必须的。

    console.log("NR\/2014\/02\/1257" === "NR/2014/02/1257"); //true
    

    但是如果你将 json 字符串放在 &lt;script&gt; 标签内,这不允许 &lt;/ 在字符串内,所以转义 / 会更安全。

    【讨论】:

      【解决方案3】:
      $json =json_encode($arr, JSON_UNESCAPED_SLASHES);
      

      【讨论】:

        【解决方案4】:

        使用JSON_UNESCAPED_SLASHES

        $arr2 = array('dn'=>'NR/2014/02/1257','dd'=>'1393934346');
        $arr=array('id'=>'123456','fname'=>'ABC','lname'=>'XYZ','dt'=>array($arr2));
        
        $json = json_encode($arr, JSON_UNESCAPED_SLASHES));
        

        是php中预定义的json常量之一http://www.php.net/manual/en/json.constants.php

        【讨论】:

          【解决方案5】:
          var obj = jQuery.parseJSON(jsondata);
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-11-18
            相关资源
            最近更新 更多