Как парсить JSON
Мне необходимо из моего JSON взять только названия песен из songs. Подскажите как сделать это в этом JSON файле(исходник на JSON хранится здесь(http://myradio24.com/users/85276/status.json). Я попытался его отформатировать, но это мой первый опыт с JSON):
"playlist":"\/",
"streams":[
{
"mount":"85276",
"user":"85276",
"kbps":128,
"format":"mp3",
"url":"https:\/\/myradio24.org\/85276"
}
],
"rank":[
[
"admin",
0,
0,
0,
"img\/noavatar.jpg"
]
],
"songs":[
[
"13:36:27",
"Goro-Road",
"img\/nocover.jpg",
3628123713
],
[
"13:38:38",
"PAVELB4H-\u041c\u043d\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442 \u0431\u044b-kissvk.com",
"img\/nocover.jpg",
2278055077
],
[
"13:40:50",
"BRANYA- MACAN-\u041f\u043e\u043f\u043e\u043b\u0430\u043c-kissvk.com",
"img\/nocover.jpg",
3979166470
],
[
"13:43:14",
"Goro-NoFly",
"img\/nocover.jpg",
2455695835
],
[
"13:45:37",
"Goro-Road",
"img\/nocover.jpg",
3628123713
],
[
"13:47:53",
"PAVELB4H-\u041c\u043d\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442 \u0431\u044b-kissvk.com",
"img\/nocover.jpg",
2278055077
],
[
"13:50:03",
"BRANYA- MACAN-\u041f\u043e\u043f\u043e\u043b\u0430\u043c-kissvk.com",
"img\/nocover.jpg",
3979166470
],
[
"13:52:25",
"Goro-NoFly",
"img\/nocover.jpg",
2455695835
],
[
"13:55:02",
"Goro-Road",
"img\/nocover.jpg",
3628123713
],
[
"13:57:02",
"PAVELB4H-\u041c\u043d\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442 \u0431\u044b-kissvk.com",
"img\/nocover.jpg",
2278055077
]
]
Я использую библиотеку gson для того, чтобы брать этот JSON с URL следующим образом:
url1 = new URL(sUrl);
HttpURLConnection request = (HttpURLConnection) url1.openConnection();
request.connect();
JsonParser jp = new JsonParser();
JsonElement root = jp.parse(new InputStreamReader((InputStream) request.getContent()));
JsonObject rootobj = root.getAsJsonObject();
Ответы (1 шт):
Автор решения: ЮрийСПб
→ Ссылка
В теории (не компилил, писал не в IDE) должно как-то так работать:
public class Data {
public List<List<String>> songs;
}
String text = new String(inputStream.readAllBytes(), StandardCharsets.UTF_8);
Data data = new Gson().fromJson(text, Data.class);
List<String> songTitles = data.songDatas.stream().map { songData -> songData.get(1) }.collect(Collectors.toList());