繁体   English   中英

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

[英]remove double quotes from json encoded array

   $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'}

我怎样才能做到这一点?

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

我认为这个问题有两个问题

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

  2. " s应该独自留下


如果你确实希望修改引号(这意味着结果不是 JSON),那么使用结果

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

请注意JSON_HEX_APOS标志,以防止这种严重的黑客破坏任何嵌入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 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>

现在它按预期工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM