我将一些数据存储在文件中,看起来像这样
{"name":"name1","uuid":"uuid1"}
{"name":"name2","uuid":"uuid2"}
而不是php我用下一个代码将其转换为JSON
$file = "someData.json";
$content = explode("\r\n", file_get_contents($file));
$output = array( 'someData' => array_values( array_filter($content) ) );
$output = json_encode($output);
echo $output;
在输出中我得到对象
[ " {"name":"name1","uuid":"uuid1"},{"name":"name2","uuid":"uuid2"} " ]
而不是带对象的数组
[{"name":"name1","uuid":"uuid1"},{"name":"name2","uuid":"uuid2"}]
使用对象获取数组的最佳解决方案是什么,或者只删除那些第一个和最后一个引用符号?
答案 0 :(得分:2)
您提出的评论是正确的。您忽略了将json解码为PHP数据结构的步骤,因此您的每个javascript对象仅被视为字符串,而不是您想要将它们视为对象/哈希值。
不要像你那样爆炸,而是将其重写为:
$ file = file_get_contents(“someData.json”;)
$ content = json_decode($ file);
$ output = array('someData'=> array_values(array_filter($ content));
$ output = json_encode($ output);
echo $ output;
答案 1 :(得分:1)
我知道这可能看起来很愚蠢,但它确实可以使用preg替换。
$json = '[ " {"name":"name1","uuid":"uuid1"},{"name":"name2","uuid":"uuid2"} " ]";
preg_replace(array("/[ \" {/", "/} \" ]/"), array("[{", "}]"), $json);
答案 2 :(得分:1)
感谢您的帮助。我在PHP中不是很好,但即使在你的例子中摆脱错误之后,我还要做出其他决定。现在我以这种原始方式回送纯JSON而没有任何解码/编码:
$file = "file.json";
$content = file_get_contents($file);
$content = rtrim($content, ",\r\n");
$output = '
{
"someData": ['.$someData.']
}
';