【问题标题】:PHP - get json data from urlPHP - 从 url 获取 json 数据
【发布时间】:2016-08-06 16:16:35
【问题描述】:

我正在尝试从此 url 加载 json 数据 = http://api.opencagedata.com/geocode/v1/json?query=48.84737%2C2.28605&pretty=1&no_annotations=1&no_dedupe=1&key=b61388b5a248b7cfcaa9579ed290485b

使用 file_get_contents 可以与其他 json url 一起使用,但这个很奇怪。它只返回“{”第一行。 Strlen 给出的 1480 是正确的。Substr(2,18) 给出的“文档”也是正确的。但我仍然无法回显整个文本。也许有一些方法可以逐行读取文本并将其保存在另一个字符串中?整个文本仍然完全加载到文本文件中 这是我尝试过的 php 代码

<?php
$url = file_get_contents("http://api.opencagedata.com/geocode/v1/json?query=48.84737%2C2.28605&pretty=1&no_annotations=1&no_dedupe=1&key=b61388b5a248b7cfcaa9579ed290485b");
$save = file_put_contents("filename.txt", $url);
echo $url;
?>

也试过这个功能,但还是一样。

function get_data($url) {
 $ch = curl_init();
 $timeout = 5;
 curl_setopt($ch, CURLOPT_URL, $url);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
 $data = curl_exec($ch);
 curl_close($ch);
 return $data;
}

【问题讨论】:

  • 当我运行它时它按预期工作。我得到了完整的 JSON 响应并将其保存到文件中。你怎么称呼你上面的代码;通过 HTTP 服务器或 CLI?
  • 你不需要逐行阅读。 JSON 允许有换行符,当你解码时它们会被忽略为空格。
  • 我正在通过 HttpUrlConnection 从 android 虚拟设备呼叫。当我解析其他 json 并回显字符串时。它显示了整个字符串。但是为什么这个只显示第一行?如果我尝试 json_decode ,如何获得“格式化”字符串?

标签: php json url openstreetmap


【解决方案1】:

你可以通过json_decode获取返回值。

function get_data($url) {
 $ch = curl_init();
 $timeout = 5;
 curl_setopt($ch, CURLOPT_URL, $url);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
 $data = curl_exec($ch);
 curl_close($ch);
 return json_decode($data,true);
}

【讨论】:

    猜你喜欢
    • 2015-04-08
    • 1970-01-01
    • 2019-01-19
    • 1970-01-01
    • 1970-01-01
    • 2018-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多