Я пытаюсь получить некоторые конкретные поля из этого Json. Мне уже удалось получить те, что были на первом уровне, но мне нужно получить некоторые данные из поля данных. Я хотел бы получить массив следующих полей данных:
data = [(data artist id, data artist id name, and data rank), (data artist id, data artist id name, and data rank)...]
Например:
data = [(ed61fe981f9143fe82536a0e5e9836f7, Rihanna, 1), (668dfb9383684b79ba603605db21ac51, PSY, 2)..]
есть идеи как это сделать?
Json находится ниже:
{ " response": { "class": "chart", "data": [ { "artist": { "class": "artist", "id": "ed61fe981f9143fe82536a0e5e9836f7", "musicbrainz": "73e5e69d-3554-40d8-8516-00cb38737a1c", "name": "Rihanna" }, "rank": 1, "value": 42437.6397 }, { "artist": { "class": "artist", "id": "668dfb9383684b79ba603605db21ac51", "musicbrainz": "f99b7d67-4e63-4678-aa66-4c6ac0f7d24a", "name": "PSY" }, "rank": 2, "value": 21562.2685 }, … goes up to about 200 items ], "end_time": 1358553600, "id": "396c5b836ce74200b2b5b8ba1df28956", "name": "high_flyers_plays_total", "next_id": null, "now_id": "b857276b34cf488f9a934765c3281af7", "period": 86400, "previous_id": "cb566393058c4ddfa0b957063fbdc2e3", "start_time": 1358467200 }, "success": true }
Вот мой php-код:
<?php //Chart json url $url = "http://website.com"; function get_json($url) { $ch = curl_init(); //Very short time to get json so long timeout not needed $timeout = 5; curl_setopt($ch,CURLOPT_URL,$url); curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout); $data = curl_exec($ch); curl_close($ch); return $data; } $json = get_json($url); $info = json_decode($json,true); //Prints the outer variables print "This is the end_time for the chart : "; print $info["response"]["end_time"]."<br />"; print "This is the name for the chart : "; print $info["response"]["name"]."<br />"; print "This is the UUID of the chart : "; print $info["response"]["id"]."<br />"; print "This is the period for the chart : "; print $info["response"]["period"]."<br />"; /* gets the json data from the URL */ ?>
Как насчет этого?
$stuff = json_decode($json, true); $results = array(); foreach($stuff['response']['data'] as $chunk) { $artist = $chunk['artist']; $id = $artist['id']; $name = $artist['name']; $rank = $chunk['rank']; $tuple = array($id, $name, $rank); $results[] = $tuple; }