2017-02-01 3 views
0

У меня есть файл PHPjson file to php array. используя json_decode дает нуль

<?php 
$str = '{ 
    "champions": [{ 
     "id": 24, 
     "stats": { 
      "armor": 27.04, 
      "attackrange": 125.0, 
     } 
    }, { 
     "id": 37, 
     "stats": { 
      "armor": 20.544, 
      "attackrange": 550.0, 

     } 
    }], 
    "matches": [{ 
     "timestamp": 1433644800, 
     "champion": 427, 
     "lane": "TOP" 
    }, {"timestamp": 1453702800, 
     "champion": 103, 
     "lane": "MIDDLE" 
    }] 
}'; 

    $array = json_decode($str,true);// read string to array (true means array, false means object) 
    var_dump($array); 
    $champions = $array["champions"]; 
    var_dump($champions); 

, который выдает нуль для обоих var_dumps. Какая у меня ошибка? Благодарю. Может быть, проблема в квадратных скобках в фрагменте json?

+0

я нашел его ... его запятую в конце attackrange – spooky

+0

использования 'json_last_error()' и вы можете увидеть, почему он возвращает null –

+0

Если json не правильно сформирован, он сломается. В вашем случае у вас есть запятые после последнего элемента массивов. Вы можете проверить [синтаксис JSON] (http://www.w3schools.com/js/js_json_syntax.asp) для получения дополнительных примеров. –

ответ

1

У вас есть ошибки в вашем JSON.

Удалить , в конце [champions][stats] Массивы.

0

удалите разделение запятой от каждого последнего элемента champions-> Статистика, как ниже то не декодирует

{ 
    "champions": [ 
     { 
      "id": 24, 
      "stats": { 
       "armor": 27.04, 
       "attackrange": 125 
      } 
     }, 
     { 
      "id": 37, 
      "stats": { 
       "armor": 20.544, 
       "attackrange": 550 
      } 
     } 
    ], 
    "matches": [ 
     { 
      "timestamp": 1433644800, 
      "champion": 427, 
      "lane": "TOP" 
     }, 
     { 
      "timestamp": 1453702800, 
      "champion": 103, 
      "lane": "MIDDLE" 
     } 
    ] 
}