从json编码的数组中删除双引号

时间:2014-04-20 03:43:23

标签: php json

   $SQL = "SELECT COLUMN_TYPE FROM INFORMATION_SCHEMA.COLUMNS
    WHERE TABLE_NAME = 'mst_sim_data' 
            AND COLUMN_NAME = 'status'";
   $result = mysql_query($SQL);
   $row = mysql_fetch_array($result);
   $enumList = explode(",", str_replace("'", '', substr($row['COLUMN_TYPE'], 5,     (strlen($row['COLUMN_TYPE'])-6))));

    foreach ($enumList as $key => $value) {
        $list["'$value'"] = $value;
    }       
    return json_encode($list);  

返回以下json字符串。

Object {'INSTOCK': "INSTOCK", 'ISSUED': "ISSUED", 'SOLDOUT': "SOLDOUT"}

但我需要用双引号替换单引号,它应该是这样的,

'INSTOCK': 'INSTOCK', 'ISSUED': 'ISSUED', 'SOLDOUT': 'SOLDOUT'}

我该怎么做?

2 个答案:

答案 0 :(得分:2)

目标是打破JSON输出吗? JSON字符串和属性必须使用"作为引用。

我认为问题是双重的

  1. $list["'$value'"] = $value;应为$list["$value"] = $value;

  2. "应单独


  3. 如果你希望破坏引号(这意味着结果是不是 JSON),那么使用 的结果

    str_replace('"', "'", json_encode($list, JSON_HEX_APOS))
    

    请注意JSON_HEX_APOS标志,以防止此严重黑客破坏任何嵌入'字符串的JSON字符串。

答案 1 :(得分:0)

$SQL = "SELECT COLUMN_TYPE FROM INFORMATION_SCHEMA.COLUMNS
            WHERE TABLE_NAME = 'mst_sim_data' 
            AND COLUMN_NAME = 'status'";
   $result = mysql_query($SQL);
   $row = mysql_fetch_array($result);
   $enumList = explode(",", str_replace("'", '', substr($row['COLUMN_TYPE'], 5,     (strlen($row['COLUMN_TYPE'])-6))));

    foreach ($enumList as $key => $value) {
        $list["$value"] = $value;
    }       
    return str_replace('"',"'",json_encode($list));

然后在js上我再次编码数组

       <?php 
          $this->load->module('sim/sim');
          $enumList = $this->sim->status_enum_dropdown();
      ?>  

        <script type="text/javascript">
            var enumList = <?php echo json_encode($enumList); ?>;
        </script>

现在它按预期工作。

相关问题