如何从json中的嵌套对象使用php获取数据

问题描述:

你能给我一些建议如何从这个文件中获取数据吗?如何从json中的嵌套对象使用php获取数据

我需要接收,例如,停止和行的列表,或来自大多数嵌套对象的其他数据,但我现在不用如何使用JSON中的嵌套对象。

{ 
    "stops": { 
     "11": "Winna-Karpacka", 
     "21": "Piwna", 
     "31": "RondoTysiąclecia", 
     "41": "Piątkowicka-Wiączyńska", 
     "51": "Taczańska", 
     "61": "Komarzewska", 
     "12": "Winna-Działki", 
     "22": "Piwna-Karpacka", 
     "32": "RondoTysiąclecia", 
     "42": "Piątkowicka", 
     "52": "Taczańska", 
     "62": "Komarzewska-Wiączyńska" 
    }, 
    "lines": { 
     "1": { 
      "variants": { 
       "16": [{ 
        "11": 0 
       }, { 
        "21": 3 
       }, { 
        "31": 5 
       }, { 
        "41": 10 
       }, { 
        "51": 12 
       }, { 
        "61": 16 
       }], 
       "61": [{ 
        "62": 0 
       }, { 
        "52": 3 
       }, { 
        "42": 6 
       }, { 
        "32": 8 
       }, { 
        "22": 14 
       }, { 
        "12": 16 
       }] 
      }, 
      "departures": { 
       "16": [ 
        "04:00", 
        "04:50", 
        "05:40", 
        "06:30", 
        "07:20", 
        "08:10", 
        "09:00", 
        "10:00", 
        "11:00", 
        "12:00", 
        "13:00", 
        "14:00", 
        "14:50", 
        "15:40", 
        "16:30", 
        "17:20", 
        "18:10", 
        "19:00", 
        "20:00", 
        "21:00", 
        "22:00" 
       ], 
       "61": [ 
        "04:25", 
        "05:15", 
        "06:05", 
        "06:55", 
        "07:45", 
        "08:35", 
        "09:30", 
        "10:30", 
        "11:30", 
        "12:30", 
        "13:30", 
        "14:25", 
        "15:15", 
        "16:05", 
        "16:55", 
        "17:45", 
        "18:35", 
        "19:30", 
        "20:30", 
        "21:30" 
       ] 
      } 
     }, 
     "2": { 
      "variants": { 
       "25": [{ 
        "21": 0 
       }, { 
        "31": 2 
       }, { 
        "41": 7 
       }, { 
        "51": 9 
       }], 
       "52": [{ 
        "52": 0 
       }, { 
        "42": 3 
       }, { 
        "32": 5 
       }, { 
        "22": 11 
       }] 
      }, 
      "departures": { 
       "25": [ 
        "10:15", 
        "10:45", 
        "11:15", 
        "11:45", 
        "12:15", 
        "12:45", 
        "13:15", 
        "13:45", 
        "14:15", 
        "14:45", 
        "15:15", 
        "15:45", 
        "16:15", 
        "16:45", 
        "17:15", 
        "17:45" 

       ], 
       "52": [ 
        "10:30", 
        "11:00", 
        "11:30", 
        "12:00", 
        "12:30", 
        "13:00", 
        "13:30", 
        "14:00", 
        "14:30", 
        "15:00", 
        "15:30", 
        "16:00", 
        "16:30", 
        "17:00", 
        "17:30" 
       ] 
      } 
     }, 
     "3": { 
      "variants": { 
       "35": [{ 
        "31": 0 
       }, { 
        "41": 12 
       }, { 
        "51": 22 
       }], 
       "53": [{ 
        "51": 0 
       }, { 
        "41": 10 
       }, { 
        "31": 22 
       }] 
      }, 
      "departures": { 
       "34": [ 
        "01:10", 
        "02:10", 
        "03:10" 
       ], 
       "43": [ 
        "01:40", 
        "02:40", 
        "03:40" 
       ] 
      } 
     } 
    } 
} 

我想是这样的,但它不工作

$str = file_get_contents('dane.json'); 
$json = json_decode($str, true); 
echo $json['stops']['11']; 
+0

'json_decode($ json_data)'关于它的研究 –

+0

你有一些代码,您和我们可以检查搞砸了?你有一些JSON数据,有很多方法可以解决;) – OldPadawan

+0

这可能会有所帮助http://*.com/a/3555356 –

json_decode,然后使用这个功能,我写生成相应的PHP代码访问任何特定元素在你的JSON。

function jsonGeneratePhp($json, $phpString = '$json') { 
    if (is_array($json)) { 
     echo "$phpString<br>"; 
     foreach ($json as $key => $value) { 
      jsonGeneratePhp($value, "{$phpString}['$key']"); 
     } 
    } elseif (is_object($json)) { 
     echo "$phpString<br>"; 
     foreach ($json as $key => $value) { 
      if (is_numeric($key)) { 
       jsonGeneratePhp($value, "{$phpString}->{{$key}}"); 
      } else { 
       jsonGeneratePhp($value, "{$phpString}->$key"); 
      } 
     } 
    } else { 
     echo "$phpString = $json<br>"; 
    } 
} 

$str = file_get_contents('dane.json'); 
$json = json_decode($str); 
jsonGeneratePhp($json); 

这将产生一堆PHP语句的对应于每个块的JSON数据,如下所示:

$json 
$json->stops 
$json->stops->{11} = Winna-Karpacka 
$json->stops->{21} = Piwna 
... 
  • 凡是结束在= something是一个值。

    例如:echo $json->stops->{11}; // Winna-Karpacka

  • 凡是不端在= something是一个数组或一个对象,可与foreach迭代。

    例如:foreach ($json->stops as $stopId => $stopName) { ... }