php:使用对象创建数组或如何摆脱额外的引号符号

时间:2013-11-26 20:05:03

标签: php json

我将一些数据存储在文件中,看起来像这样

{"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"}]

使用对象获取数组的最佳解决方案是什么,或者只删除那些第一个和最后一个引用符号?

3 个答案:

答案 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.']
        }
        ';