2014-03-04 208 views
0

我的JSON值是這樣的 -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} 
     ] 
} 

在這dnNR\/2014\/02\/1257但我想dn值爲NR/2014/02/1257按我的實際dn值。

任何人都可以幫我嗎?

回答

6

您應該使用JSON_UNESCAPED_SLASHES作爲參數來使用您的功能。自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)); 
+0

感謝您的幫助,但是當我使用JSON_UNESCAPED_SLASHES與JSON編碼方法,它不工作......爲什麼? –

+0

按照您的期望查看答案中的演示。順便說一句你正在使用哪個版本的PHP? –

+0

我的PHP版本5.3.1 –

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中預定義的JSON常數http://www.php.net/manual/en/json.constants.php

0
var obj = jQuery.parseJSON(jsondata); 
1
$json =json_encode($arr, JSON_UNESCAPED_SLASHES); 
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 

但是,如果你把一個<script>標籤,不允許</字符串內內JSON字符串,所以它是更安全逃脫/