Итак, я уже успел с одним Json, чтобы все это сработало. Теперь у меня есть другой класс, где я хочу получить только один атрибут. У меня теперь есть класс moviedatabase (который работает с JSON и получает всю информацию), и теперь я хочу добавить трейлер, который из Youtube API. поэтому в основном мне нужно, чтобы он был добавлен в тот же JSON, чтобы мне было легче в будущем вносить его в HTML. единственная проблема - я не могу заставить ее работать. При использовании этого метода я получаю синтаксическую ошибку JSON.Объедините одного Json с другим Json (JAVA)
РЕДАКТИРОВАТЬ КОД 1.1:
Youtube атрибут:
public class FilmAttribut {
private String title = "";
private String release = "";
private int vote = 0;
private String overview = "";
private String poster = "";
private String trailer = "";
// getters + setters stripped
}
Youtube класс:
public class Youtube {
FilmAttribut movie = new FilmAttribut();
public void search(String trailer, FilmAttribut in) {
HttpResponse<JsonNode> response;
try {
response = Unirest.get("https://www.googleapis.com/youtube/v3/search?key=[app key here]&part=snippet")
.queryString("q", trailer + " trailer")
.asJson();
JsonNode json = response.getBody();
JSONObject envelope = json.getObject();
JSONArray items = envelope.getJSONArray("items");
in.setTrailer("https://youtu.be/" + items.getJSONObject(0).getJSONObject("id").getString("videoId")); //Gives me error here
}
catch (JSONException e) {
e.printStackTrace();
} catch (UnirestException e) {
e.printStackTrace();
}
return null;
}
}
и основной метод
public class WebService {
public static void main(String[] args) {
setPort(1337);
Gson gson = new Gson();
Youtube yt = new Youtube();
MovieDataBase mdb = new MovieDataBase();
get("/search/:movie", (req, res) -> {
String titel = req.params(":movie");
FilmAttribut film = mdb.searchMovie(titel);
yt.search(titel, film);
String json = gson.toJson(film);
return json;
});
Итак, я думаю, проблема в том, что у вас не может быть двух gson.toJson(film) + gson.toJson(trailer);
Потому что он делает JSON дважды, где один раз для фильма (он же. фильм), а затем новый json создается с трейлером, который делает синтаксическую ошибку.
Так что мой реальный вопрос: возможно ли иметь другой класс, как у меня теперь есть youtube. отправить информацию в класс атрибута, где у меня есть все мои атрибуты, а затем запустить его в основном методе, чтобы я мог получить все JSON в одном JSON.
Хм! Я пытался это сделать, но это дало мне ошибку в 'in.trailer', где он попросил меня создать для него метод, я обновил свой код, как вы можете видеть. Я сделал так, как вы сказали, но проблема в том, где я сказал. – WeInThis
Ваш обновленный код выглядит хорошо для меня, попробуйте перекомпилировать (очистка проекта при использовании eclipse) –
Он работал после наклонения! Ой, мой человек! Большое спасибо! Btw, есть способ сделать как 'in.trailer =" https://youtu.be/ "+ items.getJSONObject (0) .getJSONObject (" id "). GetString (" videoId ");' this в главный метод? Или это сложнее? – WeInThis