помощь в разборке Gson и создание обьекта
У меня есть ответ с сервера в виде json. Так же имеется обработка.
Проблема в том что я не могу создать обьект data с данными из строки полученной с помощью gson.
public class Main{
public static void main(String[] args) {
try {
String url = "https://ghibliapi.herokuapp.com/films";
URL obj = new URL(url);
HttpURLConnection connection = (HttpURLConnection) obj.openConnection();
connection.setRequestMethod("GET");
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
// response.append("\n");
}
in.close();
// System.out.println(response.toString().replaceAll("^.|.$", ""));
String resString = response.toString().replaceAll("^.|.$", "");
Gson gson = new Gson();
String gsonString = gson.toJson(resString);
System.out.println(gsonString);
Data data = gson.fromJson(resString, Data.class);
System.out.println(data);
//
// String name = (String) jsonObject.get("title");
// System.out.println(name);
// Ghibli ghibli = new Ghibli();
// ghibli.startApp();
} catch (IOException ex) {
Logger.getLogger(Ghibli.class.getName()).log(Level.SEVERE, null, ex);
}
// ghibli.getData("https://ghibliapi.herokuapp.com/films");
}
}
Класс с данными у меня выглядит просто, поля и конструктор:
class Data {
private String id;
private String title;
@SerializedName("original_title")
private String mOriginal_title;
@SerializedName("original_title_romanised")
private String mOriginal_title_romanised;
private String description;
private String director;
private String producer;
@SerializedName("release_date")
private int mRelease_date;
@SerializedName("running_time")
private int mRunning_time;
@SerializedName("rt_score")
private int mRt_score;
private String[] people;
private String[] species;
private String[] locations;
private String[] vehicles;
private String[] url;
public Data(String id, String title, String mOriginal_title, String mOriginal_title_romanised, String description, String director, String producer, int mRelease_date, int mRunning_time, int mRt_score, String[] people, String[] species, String[] locations, String[] vehicles, String[] url) {
this.id = id;
this.title = title;
this.mOriginal_title = mOriginal_title;
this.mOriginal_title_romanised = mOriginal_title_romanised;
this.description = description;
this.director = director;
this.producer = producer;
this.mRelease_date = mRelease_date;
this.mRunning_time = mRunning_time;
this.mRt_score = mRt_score;
this.people = people;
this.species = species;
this.locations = locations;
this.vehicles = vehicles;
this.url = url;
}
}
куда идет запрос ( это прямо по ссылке "https://ghibliapi.herokuapp.com/films" ):
Ответы (1 шт):
Автор решения: Anton Buketov
→ Ссылка
Проблема была в неправильном представлении мною данных. Так как с сервера приходит не одна конкретная data а множество, то надо исправить мой парсер на
List<Data> datas = gson.fromJson(response.toString(), new TypeToken<ArrayList<Data>>(){}.getType());.
Что позволяет создавать множество data, а не одну.

