【问题标题】:Retrieving dynamically generated JSON keys and values检索动态生成的 JSON 键和值
【发布时间】:2015-08-12 19:17:00
【问题描述】:

我有下面的 JSON 结构,我将其作为 $_POST 请求拉入我的 PHP 脚本。广告系列名称和组名称的键是动态生成的,因此我需要提取这些键,然后我可以将每个广告系列及其组名称和广告文案分组到单独的数组中。

我在这里看到了几篇非常相似的帖子,但到目前为止,这些解决方案都没有奏效。我觉得我过于复杂了。

{
    "First Campaign Name": {
        "First Group Name": {
            "textads": [
                [
                    "{Headline text}",
                    "First line text",
                    "Second line text",
                    "Display URL"
                ],
                [
                    "{Headline text}",
                    "First line text",
                    "Second line text",
                    "Display URL"
                ]
            ]
        },
        "Second Group Name": {
            "textads": [
                [
                    "{Headline text}",
                    "First line text",
                    "Second line text",
                    "Display URL"
                ],
                [
                    "{Headline text}",
                    "First line text",
                    "Second line text",
                    "Display URL"
                ]
            ]
        }
    },
    "Second Campaign Name": {
        "First Group Name": {
            "textads": [
                [
                    "{Headline text}",
                    "First line text",
                    "Second line text",
                    "Display URL"
                ],
                [
                    "{Headline text}",
                    "First line text",
                    "Second line text",
                    "Display URL"
                ]
            ]
        },
        "Second Group Name": {
            "textads": [
                [
                    "{Headline text}",
                    "First line text",
                    "Second line text",
                    "Display URL"
                ],
                [
                    "{Headline text}",
                    "First line text",
                    "Second line text",
                    "Display URL"
                ]
            ]
        }
    }
}

我尝试了几个 foreach 和嵌套的 foreach 循环来尝试访问键和值,但没有成功。我最近的尝试是:

foreach($jsonString as $campaign) {
    foreach($campaign as $k => $v){
        $postData .= "Key: " . $k . "\r\n";
        $postData .= "Val: " . $v . "\r\n";
    }
}

其中 $postData 已定义,然后保存到文件中以供输出。 我还尝试了以下方法:

foreach ($_POST as $key => $value) {
    foreach( $value as $item){
        foreach( $item as $k => $v){
           $postData .= "Key: " . $k . "\r\n";
           $postData .= "Val: " . $v . "\r\n";
        }
    }
}

【问题讨论】:

  • 这就是您所需要的。循环嵌套 3 深。这怎么行不通?
  • 也许只有我一个人,但我很难理解你想要的结构是什么。您能否提供一个您想要获得的输出示例?
  • 所以事实证明问题根本不是我的逻辑,而是脚本接收的实际 JSON,我无法在此处发布,因为它包含敏感信息。正在传递的 JSON 数据包含未正确转义的单引号。感谢大家的帮助!
  • 为了澄清我之前的评论,通过 $_POST 接收的 JSON 数据包含似乎正在分解字符串的撇号。

标签: php json key postdata


【解决方案1】:

您需要先将 JSON 转换为 php 数组,然后才能将其与 foreach 一起使用。

$phparray = json_decode($jsonString);

http://php.net/manual/en/function.json-decode.php

【讨论】:

  • json_decode ($jsonString); 将返回一个对象。你需要添加一个额外的标志来获取一个关联数组:json_decode ($jsonString, true)
猜你喜欢
  • 1970-01-01
  • 2011-11-15
  • 1970-01-01
  • 2012-06-16
  • 1970-01-01
  • 2014-10-18
  • 2010-12-17
  • 2014-09-07
  • 1970-01-01
相关资源
最近更新 更多