【问题标题】:Parsing Decoded nested/mixed JSON in PHP在 PHP 中解析解码的嵌套/混合 JSON
【发布时间】:2016-02-23 20:13:48
【问题描述】:

我正在尝试解析完整的 JSON 结构。我已经能够获取单个嵌套对象,但我希望它比查找每个嵌套结构要简单得多。

这是我拥有的 JSON 结构:

{
"request1": {
    "nest11": "solution11",
    "nest12": "solution12"
},
"request2": {
    "nest21": "solution21",
    "nest22": "solution22"
},
"request3": true,
"request3": {
    "nest31": "solution31",
    "nest32": "solution31",
    "nestnest1": {
        "nestnest11": "nestsolution11",
        "nestnest12": "nestsolution12"
    },
    "nestrequest2": {
        "nestrequest21": [{
            "nestnest21": "solution21",
            "nestnest22": "solution22"
        }]
    },
    "request4": "solution4"
}
}

当我从 API 获得响应时,假设是 $serverResponse,我正在解码以获取对象

$newobj = json_decode($serverResponse);

foreach ($newobj->request1 as $key=>$value) {
  $request1 = "request1.".$key.": <b>". $value."</b><br/>";
  }

然后我将其发送回前端进行打印。问题是我该怎么做,这样我就不必遍历每个对象并获得单独的值。无论是否嵌套,我都需要打印所有键值。感谢您的任何指点和帮助!

【问题讨论】:

  • print_r($newobj); 将为您打印所有键和值。
  • 请给我们有效的json
  • 请提取一个任何人都可以运行的最小示例。不要给我们那些 sn-ps 和包含无效 JSON 的模糊描述。
  • 为了获得灵感,CakePHP 有一个 Hash.flatten() 函数,我认为它与您正在寻找的功能接近:github.com/cakephp/cakephp/blob/master/src/Utility/…
  • 更新了 json sn-p,它缺少右括号。

标签: php json parsing decode


【解决方案1】:
function recursivePrinter($data){
    foreach($data as $k=>$v){
        if(is_array($v)) recursivePrinter($v);
        else echo "$k - $v";
    }
}
recursivePrinter(json_decode($response, true));

function recursivePrinter($data, $nested=""){
    foreach($data as $k=>$v){
        if(is_array($v)){ recursivePrinter($v, $k); }
        else echo "$nested.$k - $v";
    }
}
recursivePrinter(json_decode($response, true));

【讨论】:

  • 谢谢@Pamblam。但是,有没有办法,我可以添加类似 request1.nest1 - solution1 的东西,基本上它会尝试找到一个父对象并在显示之前添加它?
猜你喜欢
  • 2018-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多