我从API获取JSON混合数组响应,我试图有效地解析它但无法这样做
[{"Price":10,"Active":null,"Status":100,"Name":"ID"}]
我无法访问价格,名称属性。
我正在尝试json_decode``json_encode
混合使用foreach
解析此响应的最佳方法是什么(最好不带循环)
答案 0 :(得分:2)
嗯......喜欢这个
$array = json_decode('[{"Price":10,"Active":null,"Status":100,"Name":"ID"}]', true);
echo $array[0]['Price'];
输出
10
见here
正如我在评论中所说,你必须将第二个参数设置为true
,因为它是一个数组而不是一个Object,我个人不喜欢将它用作Object。
http://php.net/manual/en/function.json-decode.php
Json Decode
混合 json_decode ( string $ json [, bool $ assoc = FALSE [, int $ depth = 512 [, int $ options = 0 ]]])
采用JSON编码的字符串并将其转换为PHP变量。 参数¶
<强> ARGUMENTS 强>
json 正在解码的json字符串。
assoc 当为TRUE时,返回的对象将转换为关联数组。
深度用户指定的递归深度。
选项 JSON解码选项的位掩码
答案 1 :(得分:0)
您需要检查代码以移除<?php
或?>
周围的额外间距,或者您可以修改php中的响应。
PHP
$decode = current(json_decode(trim($response)));
var_dump($decode->Price);
答案 2 :(得分:0)
此回复没有错误
没有循环
function myfunction($value, $key)
{
echo "$key". " ". "$value";
}
$a = json_decode('[{"Price":10,"Active":null,"Status":100,"Name":"ID"}]');
array_map("myfunction",$a);
带循环的
$dataResponse = json_decode('jsonString or response',true);
然后你只是迭代它
foreach($dataResponse as $key => $value){
echo $key. " ". $value
}
希望这有帮助
答案 3 :(得分:0)