Gson не парсит обьект, в чем проблема?
Я решил сделать программу для обработки списка топ артистов с lastFM, где получаю ответ с сервера lastFM в виде JSON:
{
"artists": {
"artist": [
{
"name": "The Weeknd",
"playcount": "469394384",
"listeners": "3276211"
// ...
},
{
"name": "Taylor Swift",
"playcount": "1350758832",
"listeners": "3966437"
// ...
},
{
"name": "Tyler, the Creator",
"playcount": "380608357",
"listeners": "2319508"
// ...
}
],
"@attr": {
"page": "1",
"perPage": "50",
"totalPages": "94756",
"total": "4737792"
}
}
}
JSON валиден, с ним все в порядке, но когда дело доходит до парсинга Gson'ом, он выдает мне целый обьект вместо массива. Почему так?
мой код:
package ru.kurkin.springpetproject.controller;
import com.google.gson.Gson;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
@RestController
public class MainController {
@RequestMapping("/top")
public Object requestTopArtists(RestTemplate restTemplate) {
String url = "Здесь мой ключ к api lastFM";
String response = restTemplate.getForObject(url, String.class);
Gson gson=new Gson();
Object object = gson.fromJson(response,Object.class);
return object;
}
}
Я пробовал сделать массив типа такого:
Artist[] artists=gson.fromJson(response,Artist[].class);
Но он выдает ошибку:
Expected BEGIN_ARRAY but was BEGIN_OBJECT
Модель данных:
package ru.kurkin.springpetproject.model;
public class Artists {
Artist[] artists;
public Artist[] getArtist() {
return artists;
}
public void setArtist(Artist[] artist) {
this.artists = artist;
}
}
Источник: Stack Overflow на русском