Разбор данных JSON с помощью PHP - PullRequest
3 голосов
/ 27 апреля 2011

Это немного нубский вопрос. Я работаю с файлом JSON, который выглядит примерно так:

{"nodes": 
  [{"node": 
     {"Vocabulary name":"Bestseller Format",
      "Term":"Hardcover Fiction",
      "Bestseller1":"9780470227800",
      "Bestseller2":"9781451617962",
      "Bestseller3":"9781439167397",
      "Bestseller4":"9781617750106",
      "Bestseller5":"9780385533300",
      "Bestseller6":"9780670022526",
      "Bestseller7":"9781609530358",
      "Bestseller8":"9780132358040",
      "Bestseller9":"9780596159771",
      "Bestseller10":"9780151014163",
      "Bestseller11":"9780393334807",
      "Bestseller12":"9780805090161"}
  }]
}

И я пытаюсь разобрать его в php. Я придумал сценарий </p> <pre><code><?php $jsonurl = "http://www.xtracrunchy.com/pandpnewlook/?q=pandp/bestsellers"; $json = file_get_contents($jsonurl,NULL, NULL, 0, 1000); $json_output = json_decode($json,true); $bestseller_array = $json_output[nodes][0][node]; foreach ($bestseller_array as $key => $value) { print $key; print " - "; print $value; print "<br />"; } ?>

Я хотел бы иметь возможность в конечном итоге создать упорядоченный список ISBN бестселлеров, но единственный вывод, который я получаю при запуске этого скрипта, -

Название словаря - формат бестселлера Термин - Художественная литература в твердом переплете

и когда я добавляю счетчик печати ($ bestseller_array); Я получаю только 2 элемента в массиве.

Любая помощь будет оценена.

Ответы [ 3 ]

1 голос
/ 27 апреля 2011

Прежде всего, я настоятельно рекомендую вам использовать CURL вместо file_get_contents(), потому что в некоторых случаях не будет работать.Но поскольку это не является частью вопроса, я не буду больше об этом говорить.

Во-вторых, вы используете неназванные литеральные константы, что очень плохо.

$json_output[nodes][0][node];

Должно быть:

$json_output['nodes'][0]['node'];

См. Здесь документацию , почему .

Наконец, строка JSON, которую вы написали выше, не совпадает с тем, что возвращаетсяэтот URL, и сценарий работает, как и ожидалось, на этом "новом" JSON.

1 голос
/ 27 апреля 2011

@ хлопает, если вы заходите по URL, который есть в вашем $ jsonurl, вы получаете только:

{"nodes":[{"node":{"Vocabulary name":"Bestseller Format","Term":"Hardcover Fiction"}}]}

Вы уверены, что не пропустили что-то из URL?

0 голосов
/ 27 апреля 2011

Вывод с сервера не соответствует ожидаемому.

var_dump( $json );
//string(87) "{"nodes":[{"node":{"Vocabulary name":"Bestseller Format","Term":"Hardcover Fiction"}}]}"

Надеюсь, это поможет ...

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