Извлечение целого с помощью залпа - PullRequest
0 голосов
/ 26 марта 2019

Ссылка на изображение Json Я пытаюсь извлечь целое число из объекта Json, используя Volley, и не могу вернуть значение. Я пытался извлечь его как строку (работал для двойных значений), но это не работает для моего значения int. Ответ Json и мой код ниже. это «идентификатор», который я пытаюсь получить и использовать как часть создания URL для другого сетевого вызова.

[json image link][1]

// parse Json using volley to make network call
private String parseMovieJSON(final String url) {

    JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null,
            new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {

                    try {
                        JSONArray jsonArray = response.getJSONArray("results");

                        mMoviesList.clear();


                        for (int i = 0; i < jsonArray.length(); i++) {
                            JSONObject movie = jsonArray.getJSONObject(i);

                            //Get json data as strings
                            int id = movie.optInt("id");
                            String posterPath = movie.optString("poster_path");
                            String originalTitle = movie.optString("title");
                            String overview = movie.getString("overview");
                            String releaseDate = movie.optString("release_date");
                            String voteAverage = movie.optString("vote_average");


                            mMoviesList.add(new Movies(id, posterPath, originalTitle, overview, releaseDate, voteAverage));

                        }


                        myMoviesAdapter = new MyMoviesAdapter(MainActivity.this, mMoviesList);
                        myMoviesAdapter.setOnItemClickListener(MainActivity.this);
                        mRecyclerView.setAdapter(myMoviesAdapter);
                        myMoviesAdapter.notifyDataSetChanged();


                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            }, new Response.ErrorListener() {

        @Override
        public void onErrorResponse(VolleyError volleyError) {
            if (volleyError instanceof NetworkError) {

                if (checkConnection()) {
                    parseMovieJSON(url);

                } else if (!checkConnection()) {

                    Toast.makeText(MainActivity.this, "Check Network Connection", Toast.LENGTH_LONG).show();
                    mMoviesList = null;

                }


            }

        }
    });

    mRequestQueue.add(request);
    checkConnection();

    return url;
}


  // network call for Trailers
private void extractTrailer(String s) {


    JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, uriBuilder(), null,
            new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {


                    try {
                        JSONArray jsonArray = response.getJSONArray("results");


                        for (int i = 0; i < jsonArray.length(); i++) {
                            JSONObject results = jsonArray.getJSONObject(i);

                            //Get json data as strings
                            int idNumber = results.optInt(KEY_ID);
                            String movieKey = results.optString(KEY_URL);
                            String movieName = results.optString(KEY_NAME);

                        }


                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            }, new Response.ErrorListener() {

        @Override
        public void onErrorResponse(VolleyError volleyError) {

        }
    });

    mRequestQueue.add(request);
}

private String uriBuilder() {

    // http://api.themoviedb.org/3/movie/157336/videos?api_key=### (template example)

    Uri.Builder builder = Uri.parse(Constants.BASE_URL).buildUpon();
    builder.appendPath("movie").
            appendPath(String.valueOf(Constants.MOVIE_ID)).
            appendPath("videos").
            appendQueryParameter("api_key", BuildConfig.ApiKey);

    return builder.build().toString();

}

1 Ответ

0 голосов
/ 27 марта 2019

Я осмотрелся еще и обнаружил кое-что о свойстве id, которого я не знал. Вот несколько ссылок:

SO id

JSON ID

Я не знаю, контролируете ли вы или просто используете данные json, но эти ссылки могут объяснить то, что мы видим. поле является строкой, если используется.

...