JSON结果格式错误

时间:2014-03-04 12:09:23

标签: php arrays json function escaping

我的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值。

任何人都可以帮助我???

5 个答案:

答案 0 :(得分:6)

您应该使用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


低于5.4.0的PHP版本的周转时间,不支持JSON_UNESCAPED_SLASHES,执行简单的替换反斜杠就可以了。

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

答案 1 :(得分:2)

使用JSON_UNESCAPED_SLASHES函数时,您可以设置json_encode()参数(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字符串放在<script>标记内,这不允许字符串中有</,那么逃避/会更安全。

答案 2 :(得分:1)

$json =json_encode($arr, JSON_UNESCAPED_SLASHES);

答案 3 :(得分:0)

使用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 http://www.php.net/manual/en/json.constants.php

中预定义的json常量之一

答案 4 :(得分:0)

var obj = jQuery.parseJSON(jsondata);