【问题标题】:Parsing JSON with PHP and CURL使用 PHP 和 CURL 解析 JSON
【发布时间】:2017-12-16 19:31:50
【问题描述】:

我对 JSON 和 PHP 有疑问。 我通过 CURL 查询网站的 API,并获得 JSON 作为响应。

当我发出命令var_dump (json_decode ($ result)); 时,他的打印效果不佳。 我哪里错了?

PHP:

<?php

$url = "https://vulners.com/api/v3/audit/audit/?os=redhat&version=7.1&package=redhat-release-server-7.2-9.el7.x86_64";


$cURL = curl_init();

curl_setopt($cURL, CURLOPT_URL, $url);
curl_setopt($cURL, CURLOPT_HTTPGET, true);
curl_setopt($cURL, CURLOPT_HTTPHEADER, array(
    'Content-Type: application/json',
    'Accept: application/json'
));
$result = curl_exec($cURL);
var_dump(json_decode($result));
var_dump(json_decode($result, true));
curl_close($cURL);

?&gt;

JSON:

{ "result": "OK", "data": { "packages": { "redhat-release-server-7.2-9.el7.x86_64": { "RHSA-2017:3108": [ { "package": "redhat-release-server-7.2-9.el7.x86_64", "providedVersion": "0:7.2-9.el7", "bulletinVersion": "7.2-9.el7_2.3", "providedPackage": "redhat-release-server-7.2-9.el7.x86_64", "bulletinPackage": "redhat-release-server-7.2-9.el7_2.3.x86_64.rpm", "operator": "lt", "bulletinID": "RHSA-2017:3108", "cvelist": [], "fix": "sudo yum -y update redhat-release-server" } ], "RHSA-2017:1384": [ { "package": "redhat-release-server-7.2-9.el7.x86_64", "providedVersion": "0:7.2-9.el7", "bulletinVersion": "7.2-9.el7_2.2", "providedPackage": "redhat-release-server-7.2-9.el7.x86_64", "bulletinPackage": "redhat-release-server-7.2-9.el7_2.2.x86_64.rpm", "operator": "lt", "bulletinID": "RHSA-2017:1384", "cvelist": [], "fix": "sudo yum -y update redhat-release-server" } ] } }, "vulnerabilities": [ "RHSA-2017:3108", "RHSA-2017:1384" ], "reasons": [ { "package": "redhat-release-server-7.2-9.el7.x86_64", "providedVersion": "0:7.2-9.el7", "bulletinVersion": "7.2-9.el7_2.3", "providedPackage": "redhat-release-server-7.2-9.el7.x86_64", "bulletinPackage": "redhat-release-server-7.2-9.el7_2.3.x86_64.rpm", "operator": "lt", "bulletinID": "RHSA-2017:3108", "cvelist": [], "fix": "sudo yum -y update redhat-release-server" }, { "package": "redhat-release-server-7.2-9.el7.x86_64", "providedVersion": "0:7.2-9.el7", "bulletinVersion": "7.2-9.el7_2.2", "providedPackage": "redhat-release-server-7.2-9.el7.x86_64", "bulletinPackage": "redhat-release-server-7.2-9.el7_2.2.x86_64.rpm", "operator": "lt", "bulletinID": "RHSA-2017:1384", "cvelist": [], "fix": "sudo yum -y update redhat-release-server" } ], "cvss": { "score": 0.0, "vector": "NONE" }, "cvelist": [], "cumulativeFix": "sudo yum -y update redhat-release-server", "id": "WAIT4O6XKXKD4SF9KIRJFJ2DG0J47R3DI1Y42J661KCJ5D0N9DB7TLB1E36N5OQ34JDB0PG1MP893WHTFL60YGQ92RJ3FC4JX7SLZNTUU5DTD3GLFK5PQJ5T1NYGVIBT" } }int(1) int(1)

很好:)

object(stdClass)#1 (5) {
    ["a"] => int(1)
    ["b"] => int(2)
    ["c"] => int(3)
    ["d"] => int(4)
    ["e"] => int(5)
}

array(5) {
    ["a"] => int(1)
    ["b"] => int(2)
    ["c"] => int(3)
    ["d"] => int(4)
    ["e"] => int(5)
}

【问题讨论】:

  • 那么您现在面临什么问题?你有数据。
  • 你是什么意思“他打印不好”... ?!?

标签: php json curl


【解决方案1】:

int(1)curl_exec命令的实际返回值documentation states

成功时返回 TRUE,失败时返回 FALSE。但是,如果设置了 CURLOPT_RETURNTRANSFER 选项,它将在成功时返回结果,在失败时返回 FALSE。

因此,您可以尝试设置 curl_setopt($cURL, CURLOPT_RETURNTRANSFER, true); 因为这应该在成功时返回响应本身。

然后使用var_dump(json_decode($result, true)); 得到漂亮的打印。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多