Я пытаюсь прочитать файл json на php, я могу получить корневые части файла, однако, что бы я ни пытался, я не могу прочитать внутренние части (дочерние элементы) файла json, любая помощь будет отличной

Вот файл 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



?>
0
Haggo 23 Окт 2018 в 15:36

2 ответа

Лучший ответ

Два вопроса:

  1. version3.0 не является допустимым идентификатором - вместо него следует использовать {"version3.0"}.

  2. surfaces - это массив, поэтому вам следует использовать surfaces[0]

Это может сработать

$character->{"version3.0"}->customizationInfo->surfaces[0]->areas[0]->colorName
3
Philipp 23 Окт 2018 в 12:41

Причина, по которой это не работает, заключается в том, что $character->version3.0->customizationInfo->surfaces является массивом и требует соответствующего разыменования:

$character->{'version3.0'}->customizationInfo->surfaces[0]->areas[0]->colorName
1
Aleks G 23 Окт 2018 в 13:31
52949264