我试图用php编码函数创建它:
{
"foo": [
{
"bar": "111"
}
]
}
但我可以管理一些php数组和json编码:
{
"foo": [
"{
\"bar\":184530"
}"
]
}
显然我不希望将对象作为字符串而是作为对象,所以没有引号。
这是我的PHP:
$stmt->execute();
$stmt->bind_result($bar);
while ($stmt->fetch()) {
$activity_array = array("bar" => $bar);
$activity_json = json_encode($activity_array);
$json_array[] = $activity_json;
}
$json = json_encode($json_array);
echo '{ "foo": ' .$json .'}';
答案 0 :(得分:5)
不要将数据结构的位编码为JSON。仅编码最终数据结构。删除这一行:
$activity_json = json_encode($activity_array);
这会导致您将一个编码为JSON的数组存储在一个数组中,该数组也被编码为JSON。
你想要一个包含数组(不是JSON位)的数组(编码为JSON)。
答案 1 :(得分:1)
json_encode
接受一个PHP数组,并将其转换为JSON。您不是将数组构建为JSON,只是构建一个普通数组,然后json_encode
它。
例如,要在问题中创建对象,您可以这样做:
$arr = array('foo' => array(
array('bar' => 111)
));
echo json_encode($arr);
所以,只需构建数组,然后echo json_encode($json_array);
。
$stmt->execute();
$stmt->bind_result($bar);
while ($stmt->fetch()) {
$activity_array = array("bar" => $bar);
$json_array[] = $activity_json;
}
$json = json_encode(array('foo' => $json_array));
echo $json;
答案 2 :(得分:0)
您可以使用此little PHP library。它会发送标题并为您提供一个易于使用的对象。
看起来像:
<?php
// Include the json class
include('includes/json.php');
// Then create the PHP-Json Object to suits your needs
// Set a variable ; var name = {}
$Json = new json('var', 'name');
// Fire a callback ; callback({});
$Json = new json('callback', 'name');
// Just send a raw JSON ; {}
$Json = new json();
// Build data
$object = new stdClass();
$object->test = 'OK';
$arraytest = array('1','2','3');
$jsonOnly = '{"Hello" : "darling"}';
// Add some content
$Json->addContent(new propertyJson('width', '565px'));
$Json->addContent(new textJson('You are logged IN'));
$Json->addContent(new objectJson('An_Object', $object));
$Json->addContent(new arrayJson("An_Array",$arraytest));
$Json->addContent(new jsonJson("A_Json",$jsonOnly));
// Finally, send the JSON.
json_send($Json)
?>