将 JSON 解码为 PHP 数组,然后解码为 MySQL


decode json to php array and then to mysql

我需要将此 JSON 转换为 PHP 数组,然后循环浏览项目并将它们放入相应的列中,我尝试自己使用 JSON 解码,但我得到的只是我知道请求工作正常的文本数组并给出以下输出:

 [{"roomType":"Single rooms","roomTypeCode":"SB"},{"roomType":"Double rooms","roomTypeCode":"DB"},{"roomType":"Twin rooms","roomTypeCode":"TB"},{"roomType":"Triple rooms","roomTypeCode":"TR"},{"roomType":"Suites","roomTypeCode":"S"},{"roomType":"Non-smoking rooms","roomTypeCode":"NS"},{"roomType":"Quad rooms","roomTypeCode":"Q"},{"roomType":"Twin for sole use","roomTypeCode":"TS"}]

如果我打印需要解码的字符串,它的全部内容都在那里,但 JSON 解码似乎不能只是,但这会变成一个关联数组,就像我试图使用它的方式一样,这里是请求

$ch = curl_init();
$timeout = 0;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$rawdatar = curl_exec($ch);
curl_close($ch);
$roomdata = json_decode($rawdatar);
print $roomdata;

如果我打印$rawdatar我会得到上述 JSON 行,但在打印时只有 Array$roomdata我做错了什么

JSON 数据是一个对象数组:

尝试这样做:

echo $roomdata[0]->roomType;

如果你print($roomdata) ,它将始终显示Array,因为这就是它。 有关更多信息,请阅读json_decode:http://php.net/manual/en/function.json-decode.php

解码JSON不会神奇地将内容放入关联数组中。 您在那里拥有的 JSON 结构表示一个对象数组。 您需要自己将其映射到关联数组,如下所示:

$object_array = json_decode($rawdatar);
$result_array = array();
foreach($object_array as $obj) {
    $result_array[$obj->roomType] = $obj->roomTypeCode;
}