我正在构建一个解码JSON文件的天气应用程序(可在此处找到:http://api.openweathermap.org/data/2.5/forecast?q=Helsinki&appid=77f5e3fbc99649054660f82f871220f4&units=metric)
我遇到的问题是在我的PHP代码中导航JSON文件以正确选择tempature。
我需要做list->1->main->temp
但这会在PHP中引发一个数字错误。如何正确设置导航?
echo "<form id='searchform' method='POST' action='https://projekt2-sofiamusick.c9users.io/wordpress/prognos/'>
Search: <input type='text' name='searchquery' placeholder='Search the forum' />
<input class='sendbutton_search' type='submit' name='search' value='>>' />
</form>";
if (isset($_POST['search'])){
$cityz = $_POST['searchquery'];
echo "<br>";
echo "<div id=apithing>";
$data = file_get_contents("http://api.openweathermap.org/data/2.5/forecast?q=$cityz&appid=77f5e3fbc99649054660f82f871220f4&units=metric");
$jsonObject = json_decode($data, JSON_NUMERIC_CHECK);
json_encode( array( 'list' => (int)$jsonObject ) );
$list = $jsonObject->list;
$number = $jsonObject->'1';
$mains = $jsonObject->main;
echo $mains;
答案 0 :(得分:2)
如果您使用myangularwebsite
,则您的数据会以数组形式显示
如果你想获得第一个元素,只需使用.../api/external
如果没有JSON_NUMERIC_CHECK
,您的数据将显示为stdClass,您可以使用$jsonObject['list'][0]
获得第一个元素
答案 1 :(得分:0)
你可以像这样实现它
$data = file_get_contents("http://api.openweathermap.org/data/2.5/forecast?q=Helsinki&appid=77f5e3fbc99649054660f82f871220f4&units=metric");
$jsonObject = json_decode($data);
if($jsonObject->cod == '200' && count($jsonObject->list) > 0){
foreach ($jsonObject->list as $jlk => $jlv) {
$dt = $jlv->dt;
$main = $jlv->main;
// your rest of logic
}
}
如果您愿意,可以看到这样的数据:
echo '<pre>';
var_dump($jsonObject);
echo '</pre>';
die;
你会看到对象,意味着你必须使用“ - &gt;”要访问,你看到数组,使用数组的键来获取该值。
如果有任何其他疑问,请随时询问。