Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android:将我从API返回的JSON转换成单个字符串_Java_Android_Android Asynctask_Android Json - Fatal编程技术网

Java Android:将我从API返回的JSON转换成单个字符串

Java Android:将我从API返回的JSON转换成单个字符串,java,android,android-asynctask,android-json,Java,Android,Android Asynctask,Android Json,我试图以某种方式将从API返回的JSON转换成单个字符串 我在这里的代码从API获取有关电影的信息: 它返回JSON。然而,我需要得到一些值,比如从“Title”到字符串变量的“Buffy the vampile Slayer” 新闻 GetMethod package com.example.project21.stepbystep; import android.content.Context; import android.os.AsyncTask; import android.uti

我试图以某种方式将从API返回的JSON转换成单个字符串

我在这里的代码从API获取有关电影的信息:

它返回JSON。然而,我需要得到一些值,比如从“Title”到字符串变量的“Buffy the vampile Slayer”

新闻

GetMethod

package com.example.project21.stepbystep;

import android.content.Context;
import android.os.AsyncTask;
import android.util.Log;

import org.json.JSONObject;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;


public class GetMethod extends AsyncTask<String , Void ,String> {
    String server_response;
    private AsyncResponse delegate ;



    protected GetMethod(AsyncResponse delegate) {
        this.delegate = delegate;
    }

    @Override
    protected String doInBackground(String... strings) {


        delegate=delegate;
        URL url;
        HttpURLConnection urlConnection = null;

        try {
            url = new URL(strings[0]);

            urlConnection = (HttpURLConnection) url.openConnection();
            urlConnection.connect();
            int responseCode = urlConnection.getResponseCode();

            if (responseCode == HttpURLConnection.HTTP_OK) {
                server_response = readStream(urlConnection.getInputStream());
                Log.v("CatalogClient", server_response);
                return server_response;
            }

        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        return null;
    }

    @Override
    protected void onPostExecute(String s) {
        // super.onPostExecute(s);
        delegate.processFinish(server_response);



    }


// Converting InputStream to String

    private String readStream(InputStream in) {
        BufferedReader reader = null;
        StringBuffer response = new StringBuffer();
        try {
            reader = new BufferedReader(new InputStreamReader(in));
            String line = "";
            while ((line = reader.readLine()) != null) {
                response.append(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (reader != null) {
                try {
                    reader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return response.toString();
    }
}

您应该将json字符串解析为map或pojo数据模型 您可以使用android内置模块JSONObject,也可以从google使用GSON开源库


为从ApI获得的数据创建模型类,如下所示:试试这个

  public class DataObject {
        private String title;
        private String year;
        private String rated;
        private String genre;
        private String director;
        private String writer;
        private String actors;
        private String plot;
        private String language;
        private String country;
        private String awards;

        public String getTitle() {
            return title;
        }

        public void setTitle(String title) {
            this.title = title;
        }

        public String getYear() {
            return year;
        }

        public void setYear(String year) {
            this.year = year;
        }

        public String getRated() {
            return rated;
        }

        public void setRated(String rated) {
            this.rated = rated;
        }

        public String getGenre() {
            return genre;
        }

        public void setGenre(String genre) {
            this.genre = genre;
        }

        public String getDirector() {
            return director;
        }

        public void setDirector(String director) {
            this.director = director;
        }

        public String getWriter() {
            return writer;
        }

        public void setWriter(String writer) {
            this.writer = writer;
        }

        public String getActors() {
            return actors;
        }

        public void setActors(String actors) {
            this.actors = actors;
        }

        public String getPlot() {
            return plot;
        }

        public void setPlot(String plot) {
            this.plot = plot;
        }

        public String getLanguage() {
            return language;
        }

        public void setLanguage(String language) {
            this.language = language;
        }

        public String getCountry() {
            return country;
        }

        public void setCountry(String country) {
            this.country = country;
        }

        public String getAwards() {
            return awards;
        }

        public void setAwards(String awards) {
            this.awards = awards;
        }
    }   



         public DataObject processFinish(String output){
     TextView viewGet = (TextView) findViewById(R.id.txtGet);

            DataObject object = parseJson(output);
    if(object != null){
     viewGet.setText(object.getTitle);
    }
 }

 public DataObject parseJson(String output){
   DataObject dataObject = null;
   if(output != null){
   try {

      JSONObject jsonObject = new JSONObject(output);

      String title = jsonObject.getString("Title");
      String year = jsonObject.getString("Year");
      String rated = jsonObject.getString("Rated");
      dataObject = new DataObject();
      dataObject.setTitle(title);
      dataObject.setYear(year);
      dataObject.setRated(rated);
    } catch (Exception e) {
        e.printStackTrace();
     }
} else {
         Toast.makeText(context, "Didn't get data from json",Toast.LENGTH_SHORT).show();
}

            return dataObject;
        }
package com.example.project21.stepbystep;

public interface AsyncResponse {

    void processFinish(String output);
}
  public class DataObject {
        private String title;
        private String year;
        private String rated;
        private String genre;
        private String director;
        private String writer;
        private String actors;
        private String plot;
        private String language;
        private String country;
        private String awards;

        public String getTitle() {
            return title;
        }

        public void setTitle(String title) {
            this.title = title;
        }

        public String getYear() {
            return year;
        }

        public void setYear(String year) {
            this.year = year;
        }

        public String getRated() {
            return rated;
        }

        public void setRated(String rated) {
            this.rated = rated;
        }

        public String getGenre() {
            return genre;
        }

        public void setGenre(String genre) {
            this.genre = genre;
        }

        public String getDirector() {
            return director;
        }

        public void setDirector(String director) {
            this.director = director;
        }

        public String getWriter() {
            return writer;
        }

        public void setWriter(String writer) {
            this.writer = writer;
        }

        public String getActors() {
            return actors;
        }

        public void setActors(String actors) {
            this.actors = actors;
        }

        public String getPlot() {
            return plot;
        }

        public void setPlot(String plot) {
            this.plot = plot;
        }

        public String getLanguage() {
            return language;
        }

        public void setLanguage(String language) {
            this.language = language;
        }

        public String getCountry() {
            return country;
        }

        public void setCountry(String country) {
            this.country = country;
        }

        public String getAwards() {
            return awards;
        }

        public void setAwards(String awards) {
            this.awards = awards;
        }
    }   



         public DataObject processFinish(String output){
     TextView viewGet = (TextView) findViewById(R.id.txtGet);

            DataObject object = parseJson(output);
    if(object != null){
     viewGet.setText(object.getTitle);
    }
 }

 public DataObject parseJson(String output){
   DataObject dataObject = null;
   if(output != null){
   try {

      JSONObject jsonObject = new JSONObject(output);

      String title = jsonObject.getString("Title");
      String year = jsonObject.getString("Year");
      String rated = jsonObject.getString("Rated");
      dataObject = new DataObject();
      dataObject.setTitle(title);
      dataObject.setYear(year);
      dataObject.setRated(rated);
    } catch (Exception e) {
        e.printStackTrace();
     }
} else {
         Toast.makeText(context, "Didn't get data from json",Toast.LENGTH_SHORT).show();
}

            return dataObject;
        }