簡體   English   中英

JSON結果格式錯誤

[英]JSON result formatting error

我的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值將dn值設為NR/2014/02/1257 dn

有誰能夠幫助我???

您應該將JSON_UNESCAPED_SLASHES用作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"}]}

演示版


小於5.4.0的PHP版本的周轉時間不支持JSON_UNESCAPED_SLASHES ,只需簡單地替換反斜杠就可以了。

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

您可以在使用json_encode()函數(PHP版本必須> = 5.4)時設置JSON_UNESCAPED_SLASHES參數。

但是字符串"NR\\/2014\\/02\\/1257""NR/2014/02/1257" JSON_UNESCAPED_SLASHES "NR\\/2014\\/02\\/1257"完全相同,因此JSON_UNESCAPED_SLASHES

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

但是,如果將json字符串放在<script>標記內,不允許在字符串內</ ,那么轉義/會更安全。

$json =json_encode($arr, JSON_UNESCAPED_SLASHES);

使用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常量之一

var obj = jQuery.parseJSON(jsondata);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM