[英]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字符串和属性必须使用"
作为引用。
我认为这个问题有两个问题
$list["'$value'"] = $value;
应该是$list["$value"] = $value;
和
"
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.