【发布时间】:2018-10-27 15:31:56
【问题描述】:
我进行 API 调用并尝试将 json 响应转换为 php 数组。然而,当检查 is_array 函数时,发现它不是一个数组。
调用 API
$ch = curl_init("https://api.url.com/value/value");
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json' , "token"));
$result = curl_exec($ch);
curl_close($ch);
$result = json_decode($result);
Json API 调用返回:
[
{
"number":"65",
"Field":"test",
"Name":"test",
"type":"Numeric",
"MaximumLength":128,
"MinimumLength":0,
"Options":"required"
}
]
等等。
我使用解码它
json_decode($result);
但是,像这样检查
if (is_array($result)) {
echo "is array";
} else {
echo "is not an array!";
}
回显“不是数组”。
我检查了 json 响应,它是有效的 json 代码。 我也试过了
json_decode($result, true);
结果相同。
我是否犯了一些明显的错误?
【问题讨论】:
-
json 响应好像不完整
-
@ka_lin 我编辑了这个问题,所以它是正确的。我把它缩短了,以免用 json 聚集整个问题。 Jsonlint 在检查 json 是否正确时返回“有效”。
-
尝试使用
is_object而非is_array进行验证 -
@MouradKaroudi 刚试过,结果一样。
-
$result = json_decode($result);你是在解码后重新分配新元素吗?它工作正常。http://sandbox.onlinephpfunctions.com/code/149cc2763575f18bac9dc669afc11ea3cc26b8d3