首页 > 解决方案 > 如何将 JSON 数据转换为数组?

问题描述

来自模板的 API 代码:

$country_array = array();
$country_array['data'] = array();

while($row = $result->fetch(PDO::FETCH_ASSOC))
{
    extract($row);

    $country_item = array
    (
        'ID' => $ID,
        'Name' => $Name,
        'Population' => $Population,
        'Area' => $Area,
    );

    // Push to "data"
    array_push($country_array['data'], $country_item);
}

// Turn to JSON and output

echo json_encode($country_array);

JSON数据:

{"data":
   [{"ID":"1","Name":"Portugal","Population":"10286263","Area":"92212"},
    {"ID":"2","Name":"United Kingdom","Population":"66836327","Area":"242495"}]}

我不确定如何在 PHP 中存储这些数据。

这是我到目前为止所拥有的:

$response = file_get_contents('http://127.0.0.1/100520093/api/post/read.php');
$response = json_decode($response);

echo $response

以上导致错误消息说我无法将类 stdClass 的对象转换为字符串。

遵循W3Schools中的示例会得到“data => Array”。

感谢您提供任何帮助,我仍然是一名业余爱好者,所以如果这是一个过度提问的问题,请放轻松,我找不到与我的特定案例相关的任何内容。

标签: phparraysjson

解决方案


默认情况下,json_decode()将 JSON 对象解码为 PHPStdClass对象。使用第二个参数true可以将它们解码为关联数组。

当您尝试回显某些内容时,它会首先转换为字符串。数组仅转换为 word Array。除非该类为其提供魔术方法,否则无法将对象转换为字符串,因此您会收到错误消息。

相反,使用var_dump()print_r()来显示内容。

$response = file_get_contents('http://127.0.0.1/100520093/api/post/read.php');
$response = json_decode($response, true);

var_dump($response);

推荐阅读