2016-08-01 7 views
0

Я хочу, чтобы прочитать данные JSon на странице http://mattrb.com/txt.txtДоступ к JSON с PHP

Например, предположим, что я хочу, чтобы получить имя «Bulbasaur.» У меня есть этот код:

<?php 
    $file = file_get_contents("http://mattrb.com/txt.txt"); 
    $json = json_decode($file); 
    echo $json->1->name; 
?> 

Этот код заставляет php просто не загружаться. Это потому, что вы не можете использовать число? Дальше я пробовал:

<?php 
    $file = file_get_contents("http://mattrb.com/txt.txt"); 
    $json = json_decode($file); 
    $num = 1; 
    echo $json->$num->name; 
?> 

Это позволяет php загружать, но при этом ничего не возвращает. Что я делаю не так?

+0

is $ json вот объект? используйте var_dump, чтобы узнать, что вы получаете от этого файла точно –

+0

Попробуйте 'print json_last_error();' before. – mario

ответ

0

Ваш json не должен содержать символы новой строки и другие недопустимые символы. Другими словами - ваш json недействителен. json_decode не работает с файлом.

$file = file_get_contents("http://mattrb.com/txt.txt"); 
var_dump(json_decode($file)); 
// NULL 
0

Ваш json недействителен. Пожалуйста, проверьте на http://jsonlint.com/.

Также вы можете получить доступ к «1» в php следующим образом: echo $ json -> {1} -> name;

0

Ваш json-файл не является valide. У вас есть пункт номер 135 проблемы с запятой, попробуйте удалить его, чтобы вы могли проанализировать файл.

"135": {, //the problem of your json data is here 
    "levels": [5, 15], 
    "probability": 4 "name": "Jolteon", 
    "attack": 65, 
    "defense": 60, 
    "type": "electric", 
    "moves": [ 
     "tackle", 
     "thundershock", 
     "thunder" 
    ], 
    "curve": 1.6 
}, 
+0

В приведенной json содержится больше этой ошибки. Попробуйте http://jsonlint.com/ – omxv

Смежные вопросы