json_encode添加了额外的方括号。 创建和写入JSON文件的方法。
function appendData($data){
$filename='data.json';
// read the file if present
$handle = @fopen($filename, 'r+');
// create the file if needed
if ($handle === null)
{
// $handle = fopen($filename, 'w+');
$handle = fopen($filename, 'w') or die("Can't create file");
}
if ($handle)
{
// seek to the end
fseek($handle, 0, SEEK_END);
// are we at the end of is the file empty
if (ftell($handle) > 0)
{
// move back a byte
fseek($handle, -1, SEEK_END);
// add the trailing comma
fwrite($handle, ',', 1);
// add the new json string
fwrite($handle, json_encode($data,JSON_UNESCAPED_SLASHES) . ']');
}
else
{
// write the first event inside an array
fwrite($handle, json_encode(array($data),JSON_UNESCAPED_SLASHES));
}
// close the handle on the file
fclose($handle);
}
}
带有数据数组参数的方法调用
$file= appendData($data);
数据
$data= array(
'name' => "abc",
'image_url' => "cdf",
);
JSON输出类似
[[{"name":"Apple iPhone 6S\u00a0with FaceTime\u00a0- 32GB, 4G LTE, Gold","image_url":"https://m.media-amazon.com/images/I/51jV7zsrOtL._AC_UL436_.jpg"}]]
问题:json输出中附加了额外的方括号,这似乎是使用json_encode(array($data))
的好理由。
但是它不会使用javascript或jquery在前端进行解析。
问题:如何使用jquery解析此双平方JSON数据,或如何使用php将数据正确附加到json文件中?
答案 0 :(得分:2)
我认为您的输出没有问题。您正在使用json_encode(array($data))
添加不必要的数组层,但是当您尝试访问值时,只需要将其纳入JS。您可以按照以下代码片段的形式将其作为2维对象数组进行访问:
let json = '[[{"name":"Apple iPhone 6S\u00a0with FaceTime\u00a0- 32GB, 4G LTE, Gold","image_url":"https://m.media-amazon.com/images/I/51jV7zsrOtL._AC_UL436_.jpg"}]]';
let v = JSON.parse(json);
console.log(v[0][0].name);
console.log(v[0][0].image_url);