PHP / JSON - 在另一个角色之前删除某个角色的每个出现

时间:2013-12-22 22:35:05

标签: php json character

我的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;

5 个答案:

答案 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