Получите результат JSON в массив PHP.Как? - PullRequest
0 голосов
/ 11 марта 2011

Вот что я пробовал:

$doc = new DOMDocument();

    $jsonurl = "http://v1.syndication.nhschoices.nhs.uk/.json?apikey=xxxxxx";
    $doc->load($jsonurl);
    var_dump(json_decode($doc));
    var_dump(json_decode($doc, true));

Выходные данные равны NULL NULL для 2 var_dumps.

JSON, возвращаемый из URL, выглядит следующим образом (после просмотра источника):

[{"Text":"Live Well","Uri":"http:\/\/v1.syndication.nhschoices.nhs.uk\/livewell?apikey=xxxxx"},{"Text":"Conditions","Uri":"http:\/\/v1.syndication.nhschoices.nhs.uk\/conditions?apikey=xxxxx"},{"Text":"Organisations","Uri":"http:\/\/v1.syndication.nhschoices.nhs.uk\/organisations?apikey=xxxxx"},{"Text":"Carers Direct","Uri":"http:\/\/v1.syndication.nhschoices.nhs.uk\/carersdirect?apikey=xxxxx"}]

Это действительно?

Ответы [ 4 ]

9 голосов
/ 11 марта 2011

Если этот URL возвращает строку JSON, вам не следует использовать класс DOMDocument для его загрузки: этот класс предназначен для манипулирования данными XML .


Вместо этого вы, вероятно, должны сделать что-то подобное, используя file_get_contents() для выполнения HTTP-запроса и получения его необработанного результата:

$url = 'http://v1.syndication.nhschoices.nhs.uk/.json?apikey=xxxxxx';
$json_string = file_get_contents($url);
$data = json_decode($json_string);
var_dump($data);


В качестве идентификатора: использование file_get_contents() для выполнения HTTP-запросов будет работать, только если allow_url_fopen включено.

Если allow_url_fopen не включено, выНадо быть готовым вернуться к решению на основе curl .

0 голосов
/ 11 марта 2011

@ Pascal MARTIN

С небольшой модификацией это работает:

$jsonurl = 'http://v1.syndication.nhschoices.nhs.uk/.json?apikey=XXXXXX';
$jsonstr = json_encode(file_get_contents($jsonurl));
$data = json_decode($jsonstr);
var_dump(json_decode($data));

Я добавил json_encode вокруг вызова file_get_contents.Спасибо всем за помощь:)

0 голосов
/ 11 марта 2011
http://v1.syndication.nhschoices.nhs.uk/.json

Я думаю, что ваш URL недействителен? /.json может быть /something.json или /json

0 голосов
/ 11 марта 2011

Вы пытаетесь каким-то образом декодировать DOMDocument.json_decode работает на струнах.Какова связь между документом DOM и строкой JSON?Совсем немного.Выберите один!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...