Получение данных из JSON-файла с помощью PHP
Я пытаюсь получить данные из следующего файла JSON с помощью PHP. Я специально хочу "temperatureMin"и " temperatureMax".
Это, наверное, очень просто, но я понятия не имею, как это сделать. Я застрял на том, что делать после file_get_contents("file.формат JSON.)" Некоторая помощь будет очень признательна!
{
"daily": {
"summary": "No precipitation for the week; temperatures rising to 6° on Tuesday.",
"icon": "clear-day",
"data": [
{
"time": 1383458400,
"summary": "Mostly cloudy throughout the day.",
"icon": "partly-cloudy-day",
"sunriseTime": 1383491266,
"sunsetTime": 1383523844,
"temperatureMin": -3.46,
"temperatureMinTime": 1383544800,
"temperatureMax": -1.12,
"temperatureMaxTime": 1383458400,
}
]
}
}
3 ответов:
получить содержимое файла JSON с помощью
file_get_contents():$str = file_get_contents('http://example.com/example.json/');теперь декодируйте JSON с помощью
json_decode():$json = json_decode($str, true); // decode the JSON into an associative arrayу вас есть ассоциативный массив, содержащий всю информацию. Чтобы выяснить, как получить доступ к нужным значениям, вы можете сделать следующее:
echo '<pre>' . print_r($json, true) . '</pre>';это позволит распечатать содержимое массива в удобном для чтения формате. Обратите внимание, что второй параметр равен
trueдля того, чтобы позволитьprint_r()знаю, что выход должен быть возвращениеed (а не просто напечатан на экране). Затем вы получаете доступ к элементам, которые вы хотите, например:$temperatureMin = $json['daily']['data'][0]['temperatureMin']; $temperatureMax = $json['daily']['data'][0]['temperatureMax'];или цикл через массив, как вы пожелаете:
foreach ($json['daily']['data'] as $field => $value) { // Use $field and $value here }
использовать json_decode чтобы преобразовать ваш JSON в массив PHP. Пример:
$json = '{"a":"b"}'; $array = json_decode($json, true); echo $array['a']; // b
Try: $data = file_get_contents ("file.json"); $json = json_decode($data, true); foreach ($json as $key => $value) { if (!is_array($value)) { echo $key . '=>' . $value . '<br/>'; } else { foreach ($value as $key => $val) { echo $key . '=>' . $val . '<br/>'; } } }
Comments