我的JSON编码特殊,所以我需要在右开括号之前删除每个引号。 (例如,每个“在{之前”)是否可以在PHP中执行此操作,如果是,如何执行此操作?
“{我希望删除括号前的每一个引号。
JSON:http://devticker.pw/json-data.php
代码在这里:
while($row = mysqli_fetch_array($result))
{
$data[] = '{"c": [{ "v": ' . $row['Timestamp'] . '"},{"v":' . $row['USD'] . '} ]}';
}
$str = json_encode(array("rows"=>$data));
$str = substr($str, 1);
$str = str_replace("\"{", "{", $str);
$str = '{"cols":[{"type":"string"},{"type":"number"}],' . $str;
$str = stripslashes($str);
echo $str;
答案 0 :(得分:2)
尝试
while($row = mysqli_fetch_array($result))
{
$data[] = array("c" => array(array( "v" => $row['Timestamp']), array("v" => $row['USD'] ))));
}
$rows = array("rows"=>$data));
$cols = array("cols" => array(array("type"=>"string"),array("type"=>"number")),$row);
$str = json_encode($cols);
echo $str;
答案 1 :(得分:1)
真的无法理解为什么你需要这样做(以及你为什么要使用原始的JSON字符串),但是你可以简单地使用php的字符串替换函数str_replace:
$your_json_string = str_replace("\"{", "{", $your_json_string);
答案 2 :(得分:1)
问题是您是手动生成部分JSON,然后使用json_encode
对该字符串进行编码,这会转义不应转义的引号。这是错的。使用str_replace
删除转义是一个工作场所,而不是生成JSON的正确方法。
如果仅使用json_encode
生成JSON,则效果很好。这样的事情应该有效:
// your columns
$cols = array();
$cols[0] = array('type' => 'string');
$cols[1] = array('type' => 'number');
// your rows
$rows = array();
while ($row = mysqli_fetch_array($result)) {
$r = new stdClass();
$r->c = array();
$r->c[0] = array('v' => $row['Timestamp']);
$r->c[1] = array('v' => $row['USD']);
$rows[] = $r;
}
// the final result
$result = array(
'cols' => $cols,
'rows' => $rows
);
// don't forget this
header('Content-Type: application/json');
echo json_encode($result);
答案 3 :(得分:0)
$json = str_replace('"{','{',$json)
答案 4 :(得分:0)
您使用的是哪个版本的PHP?
如果5.3或者大于你可以使用它:
return json_encode($var, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_AMP | JSON_HEX_QUOT);
像drupal这样的框架已经处理了这些东西 - 你可以从这里扯掉一些代码来滚动你自己的json_encode函数https://api.drupal.org/api/drupal/includes%21common.inc/function/drupal_json_encode/7