我对PHP json_encode
在JSON中如何表现JSON感到困惑。
以下是我缩短的代码:
public function testcase() {
$return = array();
$return['kOut1'] = 'valueOfKOut1';
$return['kOut2'] = 'valueOfKOut2';
$json = '[{"k1In1":10,"k1In2":0,"k1In3":2}, {"k2In1":7,"k2In2":6,"k2In3":5}]';
$data = json_decode($json, TRUE);
if (json_last_error()!=JSON_ERROR_NONE) {
die("Error parsing json");
}
$elements = array();
foreach ($data as $element) {
$e = array();
foreach ($element as $key=>$value) {
$e[$key] = $value;
}
array_push($elements, $e);
}
$return['kOutLast'] = json_encode($elements); // NOTE: if $json is here, same result!
echo json_encode($return);
}
上面脚本的输出:
{"kOut1":"valueOfKOut1","kOut2":"valueOfKOut2","kOutLast":"[{\"k1In1\":10,\"k1In2\":0,\"k1In3\":2},{\"k2In1\":7,\"k2In2\":6,\"k2In3\":5}]"}
混淆:为什么我在\"
的值中包含kOutLast
(反斜杠和双引号)?它应该只是"
。正确?
我也尝试了json_encode
中的各种选项(例如),但仍然没有运气。你有想法吗?
提前致谢,
信息:我在Code Igniter框架中编码,XAMPP v3.2.1(2013年5月7日编译)。
答案 0 :(得分:3)
JSON字符串由"
终止。如果字符串本身中有"
个字符,则显然需要对其进行转义。用于表示文本"
的正确JSON字符串为"\""
。您的字符串“是JSON”绝对不用担心。重要的是它是一个包含引号的字符串。要编码包含引号为JSON的字符串,需要使用反斜杠转义所有引号。
如果您真正想要做的是将现有JSON对象合并到另一个JSON对象中,则需要先对其进行解码:
$json = '[{"key":"value",..}]';
$data = json_decode($json);
$data = array('wrapper' => $data);
echo json_encode($data);