2017-04-11 113 views
-1

你能給我一些建議如何從這個文件中獲取數據嗎?如何從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://stackoverflow.com/a/3555356 –

回答

0

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) { ... }

相關問題