【问题标题】:Parse specific part out of JSON从 JSON 中解析特定部分
【发布时间】:2017-02-28 00:10:02
【问题描述】:

我目前正在开发一个与德国电影相关的网站。 由于我是编码新手,所以我购买了一个从 themoviedb 解析电影数据的脚本。

这是正在解析的完整 JSON 响应:

https://api.themoviedb.org/3/movie/283995?api_key=9ff892d334d361aac74e06ac0e1acb96&append_to_response=releases

对脚本的一点研究表明,标准的 release_date 被解析为:

public function getReleaseDate()
{
    return (array_key_exists('release_date', $this->raw) ? $this->raw['release_date'] : $this->raw['first_air_date']);
}

这很好,给了我“2017-04-25”。但在 JSON 响应中,我想过滤掉特定于地区的发布日期。我特别想要这里这部分的“release_date”:

{
certification: "",
iso_3166_1: "DE",
primary: false,
release_date: "2017-04-27"
},

TL;DR:我需要一个函数来解析 JSON 响应,以便我只接收德语版本的“release_date”(“2017-04-27”)。

这是我尝试过的:

 public function getReleaseDateLocalized()
{
    $date = '';
    if (isset($this->raw['releases']['countries']))
    {
        $dates = $this->raw['releases']['countries'];
    }
    elseif(isset($this->raw['release_date']))
    {
        return $this->raw['release_date'];
    }
    else
    {
        return '0000-00-00';
    }
    foreach($this->raw[$dates] as $locdates)
    {
        if (is_array($locdates))
        {
            $de .= array_search("DE", $locdates);
            $date .= raw[$de]['release_date'];

        }
        else
        {
            $date .= $this->raw['release_date'];                
        }       
    }
    return $date;
}

【问题讨论】:

  • 您是否尝试过编写脚本来处理该问题?这个论坛更多地处理程序中实际问题的细节,而不是关于如何编写 X 的泛型。如果你有一个脚本试图做你想做的事情,但被某个部分卡住了(比如如何解析JSON)然后请上传,我们可以看看,但我们无法为您编写脚本。
  • @bj7 添加了我的尝试,目前不起作用。

标签: php html json api themoviedb-api


【解决方案1】:
public function getReleaseDate()
{
  $countries = $this->raw['releases']['countries'];
  $de = array_search('DE', array_column($countries, 'iso_3166_1'));

  return $countries[$de]['release_date'];
}

【讨论】:

  • 在您的帮助下,我终于可以让它工作了。谢谢!对于那些对它看起来如何完成感兴趣的人:public function getReleaseDate() { if (isset($this->raw['releases']['countries'])) { $dates = $this->raw['releases']['countries']; $de = array_search("DE", array_column($dates, 'iso_3166_1')); return $dates[$de]['release_date']; } elseif(isset($this->raw['release_date'])) { return $this->raw['release_date']; } else { return '0000-00-00'; } }
猜你喜欢
  • 2020-09-23
  • 1970-01-01
  • 1970-01-01
  • 2018-08-04
  • 1970-01-01
  • 1970-01-01
  • 2013-06-08
  • 1970-01-01
  • 2019-05-03
相关资源
最近更新 更多