2012-02-09 97 views
0

我学习JSON现在已经运行到一个问题:JSON字符串替换

我使用这样的代码来吐约和数据的数组:

<?php 
$requiredFieldsArray = array(); 
    $results = mysql_query("select account_id, display_name, id from field 
where account_id = $holdAcctID and required_flag = 1"); 
    while($result = mysql_fetch_assoc($results)) 
     { 
     $requiredFieldsArray[] = $result; 
    } 
?> 
<script language="javascript"> 
    var requiredFieldsPRS = <?php echo "new Array(". json_encode($requiredFieldsArray).")"; ?>; 
</script> 
} 

它输出这样的:

var requiedFieldsPRS = new Array([{"account_id":"3","display_name":"Project Requested By","id":"15"},{"account_id":"3","display_name":"Project Title","id":"18"},{"account_id":"3","display_name":"Project Type","id":"19"},{"account_id":"3","display_name":"Banner Details","id":"20"},{"account_id":"3","display_name":"Email to Me","id":"2910"}]);; 

在我的代码我怎么能去掉“[“和”]“从数组的开始和结束,所以它会出现这样的?

var requiedFieldsPRS = new Array({"account_id":"3","display_name":"Project Requested By","id":"15"},{"account_id":"3","display_name":"Project Title","id":"18"},{"account_id":"3","display_name":"Project Type","id":"19"},{"account_id":"3","display_name":"Banner Details","id":"20"},{"account_id":"3","display_name":"Email to Me","id":"2910"}); 

注:开闭括号都消失了在上面的输出。

回答

0

您可以修剪掉前导和结束[]小号很轻松地为这个特殊的例子:

var requiredFieldsPRS = <?php echo "new Array(". trim(json_encode($requiredFieldsArray), '[]').")"; ?>; 

但是,如果你的数组构造函数是没有必要的,你可以只用途:

var requiredFieldsPRS = <?php echo json_encode($requiredFieldsArray); ?>; 
+0

这工作完美 - 谢谢! – user1176783 2012-02-09 17:20:05

+0

这可能是不可能的,但我会问,除此之外,上面的方法删除'[]',删除键周围的引号,但让它们围绕值吗?例如:{“account_id”:“3”,“display_name”:“Project Requested By”,“id”:“15”}会输出为{account_id:“3”,display_name:“Project Requested By”,id: “15”} – user1176783 2012-02-09 17:55:21

+0

@ user1176783你可以用一个正则表达式很容易地做到这一点。尝试像'preg_replace('/“([^”] +)“:/','$ 1:',trim(json_encode($ requiredFieldsArray),'[]'))' – Paulpro 2012-02-09 18:18:58

0

尝试使用JSON_FORCE_OBJECT关键

json_encode($requiredFieldsArray,JSON_FORCE_OBJECT); 
+0

这是你的意思:var re quiredFieldsPRS3 = <?php echo json_encode($ requiredFieldsArray,JSON_FORCE_OBJECT);?>;我正在获取并清空变量结果。 – user1176783 2012-02-09 17:00:45

+0

什么是您的PHP版本?如果它的<5.3.0,比你不能使用这个选项键:) 而是尝试使用substr像substr(json_encode($ var),1,-1) - 这将删除方括号 – 2012-02-09 17:13:17