【问题标题】:Connecting to database to retrieve and parse JSON data?连接到数据库以检索和解析 JSON 数据?
【发布时间】:2016-02-05 15:34:43
【问题描述】:

我正在尝试从我教授的一个数据库中制作一个非常基本的 html 页面。我的问题是我不知道如何从数据库中获取数据并正确解析它。例如,这是我到目前为止所拥有的。我只想打印一些卫星的名称。

<html>
<head><title>Testing</title></head>
<body>
 <p>This is above the php.</p>
 <?php
  $json = file_get_contents("https://db.satnogs.org/api/satellites/
  ?format=json");
  $data = json_decode($json);
  echo $data->{"name"};
 ?>
 <p>This is under the php. </p>
</body>
</html>

这给了我一个网页,上面写着:

This is above the php.

This is under the php.

缺少应该在两行之间的数据。我也没有错误。我知道有很多资源可以回答这个问题,但我查看了堆栈溢出和其他网页,找不到帮助我理解问题或解决问题的答案。另外,我不太确定我是否应该使用 php。任何解决问题的建议将不胜感激。

【问题讨论】:

  • 您之前是否检查过您的网址是否按预期返回内容?也许它会返回其他数据,例如 - 即 - '{"detail":"Not found."}
  • 快速提示,复制粘贴链接时,由于有换行,所以在“?format=json”前面加上“%20/”,一定要去掉正确查看数据
  • 您的代码中也有换行符。你验证$json的内容了吗?顺便说一句,返回的数据是一个数组,所以 $data-&gt;name 不起作用。关注@mmoreram 回答

标签: php json database api


【解决方案1】:

如您所见,如果您访问网站https://db.satnogs.org/api/satellites/?format=json,格式是json,但那里没有名称。

{
    "detail": "Not found."
}

在那种情况下,你可以这样做......

echo $data->detail;

也可以使用数组对json进行解码,解析起来更容易理解。

$data = json_decode($json, true);
echo $data['detail'];

更新:

实际上,url 有数据,但前提是是干净的。

在这种情况下,结果是一个数组数组:)

$data = json_decode($json, true);
foreach ($data as $item) {
    echo $item['name'] . PHP_EOL;
}

【讨论】:

  • 它有数据,由于某种原因,如果你复制并粘贴它在“?format=json”之前添加“%20/”的链接,因为上面的代码中有一个新行。跨度>
  • 要将解码后的数据作为数组使用,应该是$data=json_decode( $json, true );
  • 非常感谢大家!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-08
  • 2020-11-12
  • 1970-01-01
  • 2016-09-04
  • 1970-01-01
  • 2018-02-19
相关资源
最近更新 更多