PHP:读取包含数组中多个对象的JSON文件,并按对象拆分

时间:2015-11-05 18:29:48

标签: php arrays json

我的文件内容与此类似:

CefV8Value::GetIntValue();

例如,上面的文件有3个带有元素的对象:颜色和块。 我正在寻找一种简单的方法,用PHP只输出文件的一个对象。 (删除外部[{"color":1,"blocks":[[{"id":64}]]},{"color":1,"blocks":[[{"id":64},{"id":64}],[{"id":1}]]},{"color":2,"blocks":[[{"id":64},{"id":64}],[{"id":1}]]}] - 括号并将第一级[] - 括号拆分为数组的不同元素或不同的字符串或其他内容)

结果应该是object1

{}

或对象2

{"color":1,"blocks":[[{"id":64}]]} 

如何说PHP获取字符串并将其拆分为每个{"color":1,"blocks":[[{"id":64},{"id":64}],[{"id":1}]]} 它可以找到部分或使用第一级{"color" - 括号?

目前我正在使用{},我的代码就像 $config=json_decode($file,true); ...但那太疯狂了,对象有太多元素 我需要一种echo '{"color":'.$config[2]["color"].'"blocks"输出echo $config[2]

的方法

我尝试将该文件作为字符串读取并使用explode但{"color":2,"blocks":[[{"id":64},{"id":64}],[{"id":1}]]}"},"作为分隔符不起作用,我找不到有效的分隔符。

2 个答案:

答案 0 :(得分:3)

你错了。你不输出json,你提取子数组/对象,然后重新编码。 e.g。

$foo = json_decode($your_json);
$temp = $foo['bar'][1]['baz']; // deep sub-data
echo json_encode($temp);

不需要子字符串操作/修改。只需解码,提取,重新编码提取的部分。

答案 1 :(得分:0)

解码然后编码:

$str = '[{"color":1,"blocks":[[{"id":64}]]},{"color":1,"blocks":[[{"id":64},{"id":64}],[{"id":1}]]},{"color":2,"blocks":[[{"id":64},{"id":64}],[{"id":1}]]}]';
$config = json_decode($str, true);
$json = json_encode($config[2]);
print $json;

这将打印您想要的内容。