解析这个奇怪的回应PHP

时间:2018-03-11 05:46:36

标签: php arrays json parsing

我从API获取JSON混合数组响应,我试图有效地解析它但无法这样做

  [{"Price":10,"Active":null,"Status":100,"Name":"ID"}]

我无法访问价格,名称属性。

我正在尝试json_decode``json_encode混合使用foreach

进行尝试

解析此响应的最佳方法是什么(最好不带循环)

4 个答案:

答案 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);

PHP Fiddle

答案 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)

你可以用

  json_decode($str)[0]->Price;

首先从字符串解码,然后从第一个对象打印

LIVE DEMO