从嵌套的json循环php中提取数据

Posted

技术标签:

【中文标题】从嵌套的json循环php中提取数据【英文标题】:Pull data from nested json loop php 【发布时间】:2015-04-22 08:29:21 【问题描述】:

好的,我已经为此奋斗了两天了!!这是我的 Json 结构。 [


    "uuid":"/random number==",
    "meeting_number":7196503037,
    "host_id":"random number",
    "topic":"My's Personal Meeting Room",
    "start_time":"2015-01-06T22:01:07Z",
    "timezone":"America/Denver",
    "duration":56,
    "total_size":378080,
    "recording_count":1,
    "recording_files":[
        
            "id":"long number",
            "meeting_id":"/NS90bsSTLeGzo6cT0nwXw==",
            "recording_start":"2015-01-06T22:01:09Z",
            "recording_end":"2015-01-06T22:01:14Z",
            "file_size":378080,
            "play_url":"https://myurl"
        
    ]
,

我正在尝试从***数组(名为“会议”)中提取开始时间,并从二级数组(recording_files)中提取播放网址。我正在使用 json_decode 将文件解码为数组。

我已尝试在此站点上找到许多变体,但似乎没有任何内容可以访问播放网址。 变化 1 $aha = json_decode($response,true);

        foreach ($aha['meetings'] as $key => $value)
            foreach($key['recording_files'] as $subkey => $newvalue)


        echo '<p>Time : '.$value['start_time'].'</p>
  <a href="'.$newvalue['play_url'].'">Recording</a><br>';

这会在 foreach 中提取无效参数。

变化 2 foreach ($aha['meetings'] as $key => $value)

        echo '<p>Time : '.$value['start_time'].'</p>
  <a href="'.$value['play_url'].'">Recording</a><br>';

这会为 play_url 提取未定义的索引。与在 ['play_url'] 之前引用 ['recording_files'] 的代码相同

变化 3: 然后我尝试放弃第一级,只从第二级提取数据: $aha = json_decode($response,true);

        foreach ($aha['meetings']['recording_files'] as $key => $value)


        echo '<p>Time : '.$value['recording_start'].'</p>
  <a href="'.$value['play_url'].'">Recording</a><br>';

这给了我一个未定义的 ['recording_files'] 索引和一个 foreach 错误。

变化 4。 $aha = json_decode($response,true);

        foreach ($aha['meetings'] as $key => $value)
         $link=$key['recording_files'];

        echo '<p>Time : '.$value['start_time'].'</p>
  <a href="'.$link['play_url'].'">Recording</a><br>';

这让我最接近 - 没有错误但没有链接。我假设这里的代码看到了该字段,但只是没有从中提取数据......

请帮助一个新手json人!

【问题讨论】:

结构有问题。打开 [ 和右括号不匹配 您将 json 存储在文件中或通过 url ? @user4035 是的,他们确实... recording_files 是一个对象数组。 好的,每次在 json 中打开方括号 [ 时,都会启动一个数组本身。因此,您应该访问$aha['meetings'][0]['recording_files'][0]['play_url'],您可以在其中将 0 替换为相应的索引或通过循环访问。如果您不确定数组在哪里,只需在 json_decode 上创建一个 var_dump 所以使用 0 会从 0 记录中拉取数据。我想弄清楚如何通过循环访问它。 【参考方案1】:

编辑:

如果您的数据如下所示:

$str = "\"meetings\":[
    \"uuid\":\"/random number==\",
    \"meeting_number\":7196503037,
    \"host_id\":\"random number\",
    \"topic\":\"My's Personal Meeting Room\",
    \"start_time\":\"2015-01-06T22:01:07Z\",
    \"timezone\":\"America/Denver\",
    \"duration\":56,
    \"total_size\":378080,
    \"recording_count\":1,
    \"recording_files\":[
        
            \"id\":\"long number\",
            \"meeting_id\":\"/NS90bsSTLeGzo6cT0nwXw==\",
            \"recording_start\":\"2015-01-06T22:01:09Z\",
            \"recording_end\":\"2015-01-06T22:01:14Z\",
            \"file_size\":378080,
            \"play_url\":\"https://myurl\"
        
    ]
]";


$json = json_decode($str);
$res = $json->'meetings';

foreach($res as $keys)
    echo $keys->'start_time'."<br>";
    foreach ($keys->'recording_files' as $data)
        echo $data->'play_url'."<br>";
        echo $data->'recording_start'."<br>";
    

【讨论】:

修复它的代码是:$aha = json_decode($response,true); foreach ($aha['meetings'] as $key => $value) echo '

Time : '.$value['start_time'].'

录制';
【参考方案2】:

如果真的有$aha['meetings'](你不显示它),那么使用第二个foreach中的值而不是键:

foreach($aha['meetings'] as $value)
    foreach($value['recording_files'] as $newvalue)

【讨论】:

【参考方案3】:

修复它的最终代码。

        $aha = json_decode($response,true);

        foreach ($aha['meetings'] as $key => $value)           

        echo '<p>Time : '.$value['start_time'].'</p>
       <a href="'.$value['recording_files'][0]'play_url'.'">Recording</a><br>';

这只是找到引用 play_url 片段的正确格式的问题。 非常感谢大家!

【讨论】:

以上是关于从嵌套的json循环php中提取数据的主要内容,如果未能解决你的问题,请参考以下文章

从 Firebase remoteMessage 中的嵌套 JSON 中提取数据

如何从在线 JSON API 中提取嵌套数据对象? [关闭]

从 Python 中的嵌套 Json 中提取信息

从熊猫数据框中提取嵌套字典

使用 Python 从 JSON 嵌套列表和字符串数组中提取值

如何使用 PHP 从 JSON 中提取和访问数据?