PHP读取的JSON文件-我无法读取多层元素

时间:2018-10-23 12:36:08

标签: php json

我正在尝试在php中读取json文件,我可以检索该文件的根部分,但是无论我如何尝试,我都无法读取json文件的内部部分(子级),任何帮助都很好。< / p>

这是json文件

    {
   "orderId":"112-1567223-2156269x",
   "legacyOrderItemId":"0218943273x4778",
   "orderItemId":"2068965x7409001",
   "asin":"B01K9RxxB0GQ",
   "title":"xippro decs",
   "merchantId":"A3H7UYG3T9xx6JDM",
   "quantity":1,
   "version3.0":{
      "customizationInfo":{
         "surfaces":[
            {
               "name":"Surface 1",
               "areas":[
                  {
                     "colorName":"White",
                     "fontFamily":"Coppergate Bold",
                     "Position":{
                        "x":13,
                        "y":218
                     },
                     "name":"Line 1",
                     "Dimensions":{
                        "width":382,
                        "height":53
                     },
                     "label":"Your Text Here",
                     "fill":"#FFFFFF",
                     "customizationType":"TextPrinting",
                     "text":"Ruth's"
                  },
                  {
                     "colorName":"White",
                     "fontFamily":"Coppergate Bold",
                     "Position":{
                        "x":144,
                        "y":258
                     },
                     "name":"Customization 2",
                     "Dimensions":{
                        "width":119,
                        "height":17
                     },
                     "label":"Date (EST)",
                     "fill":"#FFFFFF",
                     "customizationType":"TextPrinting",
                     "text":"1969"
                  }
               ]
            }
         ]
      }
   },
   "customizationInfo":{
      "aspects":[
         {
            "title":"Your Text Here",
            "text":{
               "value":"Ruth's"
            },
            "font":{
               "value":"Coppergate Bold"
            },
            "color":{
               "value":"#FFFFFF"
            }
         },
         {
            "title":"Date (EST)",
            "text":{
               "value":"1969"
            },
            "font":{
               "value":"Coppergate Bold"
            },
            "color":{
               "value":"#FFFFFF"
            }
         }
      ]
   },
   "version":"2.0"
}

而我的php代码在下面

<?php

$file = file_get_contents('16532135318050.json', true);

$character = json_decode($file,false,400);

//print_r ($character);

echo $character->orderId . "<Br>"; 

echo $character->legacyOrderItemId . "<Br>"; 
echo $character->orderItemId . "<Br>"; 
echo $character->asin . "<Br>"; 
echo $character->merchantId . "<Br>"; 
echo $character->quantity . "<Br>"; 
echo $character->version3.0->customizationInfo->surfaces->areas[0]->colorName; // does not work
echo $character->version3.0->customizationInfo->surfaces->areas->colorName; // does not work



?>

2 个答案:

答案 0 :(得分:3)

两个问题:

  1. version3.0不是有效的标识符-您应该使用{"version3.0"}

  2. surfaces是一个数组,因此您应该使用surfaces[0]

这可能有效

$character->{"version3.0"}->customizationInfo->surfaces[0]->areas[0]->colorName

答案 1 :(得分:1)

它不起作用的原因是因为$character->version3.0->customizationInfo->surfaces是一个数组,需要相应地取消引用:

$character->{'version3.0'}->customizationInfo->surfaces[0]->areas[0]->colorName