我有JSON格式如下面的示例,这是循环整个文件以捕获“IWANTTHIS”值的正确方法?所有数组都在JSON中处于同一级别(“some:products”)。今天下午我的JSON太复杂了......
{
"type": "page",
"pageType": "section",
"_links": {},
"_embedded": {
"somkindof:blocks": [
{
"somevalue": 25,
"_embedded": {
"some:products": [
{
"system": {
"availability": {},
"IWANTTHIS": "20284",
"hhhh": []
},
....
我尝试了类似这样的东西,但是我无法捕获像我的例子那样格式化的值。
$jfo = json_decode($vcurl);
$channel = $jfo->_embedded->[somkindof:blocks];
var_dump $channel;
答案 0 :(得分:2)
如果将JSON解码为关联数组,事情会变得更容易。
(偶数对象将成为关联数组,您可以使用相同的语法解析整个对象树。)
然后使用方括号语法解析数组。
请注意,"somkindof:blocks"
和"some:products"
都是常规数组(有序的项目列表),因此您必须解析它们中的每一项(使用简单的foreach
)
说你可能很多“我想要这个”。
<?php
$jfo = json_decode($vcurl, true ); // <-- decode into associative array
foreach( $jfo[ "embedded" ][ "somkindof:blocks" ] as $level_1_item )
{
foreach( $level_1_item[ "_embedded" ][ "some:products" ] as $level_2_item )
{
$iWantThis = $level_2_item[ "IWANTTHIS" ];
}
}
答案 1 :(得分:1)
$channel = ['_embedded']['somkindof:blocks'][0]['_embedded']['some:products'][0]['system']['IWANTTHIS']
答案 2 :(得分:0)
将true
作为第二个参数添加到json_decode,将其解码为数组,而不是对象。
<?php
$json = '{
"type": "page",
"pageType": "section",
"_links": {},
"_embedded": {
"somkindof:blocks": [
{
"somevalue": 25,
"_embedded": {
"some:products": [
{
"system": {
"availability": {},
"IWANTTHIS": "20284",
"hhhh": []
}
}
]
}
}
]
}
}';
$jfo = json_decode($json, true);
$channel = $jfo['_embedded']['somkindof:blocks'];
print_r($channel);
答案 3 :(得分:0)
所有评论都通过向json_decode()提供true
功能来建议数组选项。
但是,如果您希望保持stdClass
使用大括号。
例如:
$jfo = json_decode($json);
foreach($jfo->_embedded->{'somkindof:blocks'} as $block) {
echo $block->{'somSomething is wrongue'};
}