如何用PHP解析这个多维JSON以获取正确的数组?

如何用PHP解析这个多维JSON以获取正确的数组?,php,arrays,json,parsing,formatting,Php,Arrays,Json,Parsing,Formatting,我有JSON,它的格式与下面的示例类似,这是循环整个文件以捕获“IWANTTHIS”值的正确方法?所有数组在JSON中都处于同一级别(“some:products”)。今天下午对我来说太复杂了 { "type": "page", "pageType": "section", "_links": {}, "_embedded": { "somkindof:blocks": [ { "somevalue": 25, "_embedded": {

我有JSON,它的格式与下面的示例类似,这是循环整个文件以捕获“IWANTTHIS”值的正确方法?所有数组在JSON中都处于同一级别(“some:products”)。今天下午对我来说太复杂了

{
  "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;

如果将JSON解码为关联数组,事情会变得更容易

(甚至对象也将成为关联数组,您可以使用相同的语法解析整个对象树)

然后使用方括号语法解析数组

请注意,
“somkindof:blocks”和
“some:products”
都是规则数组(项目的有序列表),因此您必须解析其中的每个项目(使用简单的
foreach

说你可能有很多“我想要这个”


如果将JSON解码为关联数组,事情会变得更容易

(甚至对象也将成为关联数组,您可以使用相同的语法解析整个对象树)

然后使用方括号语法解析数组

请注意,
“somkindof:blocks”和
“some:products”
都是规则数组(项目的有序列表),因此您必须解析其中的每个项目(使用简单的
foreach

说你可能有很多“我想要这个”

Thx此工具:

Thx此工具:


添加
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);

添加
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);

所有评论都建议使用数组选项,方法是为函数提供
true

但是,如果您希望维护
stdClass
,请使用大括号

例如:


所有注释都通过提供
true
来建议使用数组选项

但是,如果您希望维护
stdClass
,请使用大括号

例如:


试试
$channel=$jfo->\u embedded->{'somkindof:blocks'}
(您可能会发现将其用作数组更容易,请查看PHP文档中的json_解码参数2)试试
$channel=$jfo->\u embedded->{'somkindof:blocks'}
(您可能会发现将其用作数组更容易,请查看PHP文档中的json_解码参数2)
<?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);
$jfo = json_decode($json);

foreach($jfo->_embedded->{'somkindof:blocks'} as $block) {
    echo $block->{'somSomething is wrongue'};
}