【问题标题】:extracting specific data from json format从json格式中提取特定数据
【发布时间】:2015-02-18 14:11:30
【问题描述】:

我有以下json格式数据:

{"query":{
  "count":5,"created":"2014-12-19T15:42:41Z","lang":"en-US","results":{
    "channel":[{
      "item":{
        "forecast":{"date":"19 Dec 2014","high":"61","low":"47"}
       }},{
      "item":{
        "forecast":{"date":"20 Dec 2014","high":"60","low":"48"}
       }},{
      "item":{
        "forecast":{"date":"21 Dec 2014","high":"61","low":"44"}
       }},{
      "item":{
        "forecast":{"date":"22 Dec 2014","high":"58","low":"46"}
       }},{
      "item":{
        "forecast":{"date":"23 Dec 2014","high":"58","low":"45"}
       }}]
     }
   }
}

我如何访问这种格式的特定数据(例如只有高和低),以便将这些数据插入到 mySQL 数据库中?

【问题讨论】:

标签: php mysql json


【解决方案1】:

使用json_decode把它变成一个数组:

$array = json_decode($json_data, true);

然后,您可以访问项目、预测和高/低值:

$high = $array[1]['item']['forecast']['high'];

【讨论】:

  • 如果您希望它返回一个数组,请添加第二个参数。 json_decode($data, true) 否则它是一个对象
【解决方案2】:

例如,将您的 json 放在变量 $str 中,这样您就可以访问这些项目了:

$json = json_decode($str);
$res = $json->{'query'}->{'results'}->{'channel'};
foreach($res as $ch) {
    echo "High:" . $ch->{'item'}->{'forecast'}->{'high'} . "<br>";
    echo "Low:" . $ch->{'item'}->{'forecast'}->{'low'} . "<br>";
}

【讨论】:

    【解决方案3】:

    假设你的 json 字符串是变量 $json:

    $data = json_decode($json);
    $channels = $data->query->results->channel;
    foreach($channels as $channel) {
        // DO SOMETHING HERE
        die($channel["item"]["high"]);
    }
    

    【讨论】:

      猜你喜欢
      • 2016-05-30
      • 1970-01-01
      • 2015-01-04
      • 2020-10-02
      • 2015-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多