Java 不确定如何处理JSON数据

Java 不确定如何处理JSON数据,java,android,json,Java,Android,Json,我正在用eclipse为Android制作一个天气应用程序,我需要在1天之间每隔3小时显示一个描述天气的图标 我从 然后我在java类中使用make(我想这就是它所做的…) 现在我得到了以下代码: private class ForecastForHoursTask extends AsyncTask<String, Integer, String> { String measurement = checkMeasurement(); private final

我正在用eclipse为Android制作一个天气应用程序,我需要在1天之间每隔3小时显示一个描述天气的图标

我从

然后我在java类中使用make(我想这就是它所做的…)

现在我得到了以下代码:

private class ForecastForHoursTask extends AsyncTask<String, Integer, String> {

    String measurement = checkMeasurement();

    private final String SERVICE_ADDRESS_START = "http://api.openweathermap.org/data/2.5/forecast?q=";

    ProgressBar progressBar;

    public ForecastForHoursTask(ProgressBar progressBar) {
        this.progressBar = progressBar;
        progressBar.setProgress(0);
    }

    @Override
    protected void onPreExecute() {
        progressBar.setVisibility(View.VISIBLE);
    }

    @Override
    protected String doInBackground(String... params) {
        String serviceAddress = SERVICE_ADDRESS_START + params[0];
        StringBuilder response = new StringBuilder();
        DefaultHttpClient client = new DefaultHttpClient();
        HttpGet httpGet = new HttpGet(serviceAddress);
        try {
            HttpResponse execute = client.execute(httpGet);
            InputStream content = execute.getEntity().getContent();
            BufferedReader buffer = new BufferedReader(new InputStreamReader(content));
            String bufferString = "";
            while ((bufferString = buffer.readLine()) != null) {
                response.append(bufferString);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return response.toString();

    }

    @Override
    protected void onProgressUpdate(Integer... progress) {
        super.onProgressUpdate(progress);
        if (this.progressBar != null) {
            progressBar.setProgress(progress[0]);
        }
    }

    @Override
    protected void onPostExecute(String result) {
        ImageView imgFirst = (ImageView) findViewById(R.id.imgEightAm);
        ImageView imgSecond = (ImageView) findViewById(R.id.imgElevenAm);
        ImageView imgThird = (ImageView) findViewById(R.id.imgTwoPm);
        ImageView imgFourth = (ImageView) findViewById(R.id.imgFivePm);
        ImageView imgFifth = (ImageView) findViewById(R.id.imgEightPm);
        ImageView imgSixth = (ImageView) findViewById(R.id.imgElevenPm);
        ImageView imgSeventh = (ImageView) findViewById(R.id.imgTwoAm);
        ImageView imgEighth = (ImageView) findViewById(R.id.imgFiveAm);
        TextView imgTest = (TextView) findViewById(R.id.lblTest);

        Gson gson = new Gson();
        NewRoot newitem = gson.fromJson(result, NewRoot.class);

        progressBar.setProgress(0);
        progressBar.setVisibility(-1);
    }
}
私有类ForHoursForTask扩展了AsyncTask{
字符串测量=检查测量();
专用最终字符串服务\u地址\u开始=”http://api.openweathermap.org/data/2.5/forecast?q=";
ProgressBar ProgressBar;
公共预测小时任务(ProgressBar ProgressBar){
this.progressBar=progressBar;
progressBar.setProgress(0);
}
@凌驾
受保护的void onPreExecute(){
progressBar.setVisibility(View.VISIBLE);
}
@凌驾
受保护的字符串doInBackground(字符串…参数){
字符串serviceAddress=SERVICE_ADDRESS_START+params[0];
StringBuilder响应=新建StringBuilder();
DefaultHttpClient=新的DefaultHttpClient();
HttpGet HttpGet=新的HttpGet(服务地址);
试一试{
HttpResponse execute=client.execute(httpGet);
InputStream内容=execute.getEntity().getContent();
BufferedReader buffer=新的BufferedReader(新的InputStreamReader(内容));
字符串缓冲字符串=”;
而((bufferString=buffer.readLine())!=null){
append(bufferString);
}
}捕获(例外e){
e、 printStackTrace();
}
返回response.toString();
}
@凌驾
受保护的void onProgressUpdate(整数…进度){
super.onProgressUpdate(进度);
如果(this.progressBar!=null){
progressBar.setProgress(progress[0]);
}
}
@凌驾
受保护的void onPostExecute(字符串结果){
ImageView imgFirst=(ImageView)findViewById(R.id.imgEightAm);
ImageView imgSecond=(ImageView)findViewById(R.id.imgElevenAm);
ImageView imgThird=(ImageView)findViewById(R.id.imgTwoPm);
ImageView imgFourth=(ImageView)findViewById(R.id.imgFivePm);
ImageView imgFifth=(ImageView)findViewById(R.id.imgEightPm);
ImageView imgSixth=(ImageView)findViewById(R.id.imgElevenPm);
ImageView imgEventh=(ImageView)findViewById(R.id.imgTwoAm);
ImageView imgEighth=(ImageView)findViewById(R.id.imgFiveAm);
TextView imgTest=(TextView)findViewById(R.id.lblTest);
Gson Gson=新的Gson();
NewRoot newitem=gson.fromJson(结果,NewRoot.class);
progressBar.setProgress(0);
progressBar.setVisibility(-1);
}
}
我想将图标设置为ImageView。但我被弄得不知所措,不知该怎么办。我想我需要对数据进行排序,这样我就可以搜索(dt_txt)字段并获得相关的(icon)值,这样我就可以通过(icon)值将ImageView设置为相应的图像。
我一直在思考如何做到这一点。

这可能是一个序列化问题。NewRoot类中的名称和数据类型必须与从API下载的名称和数据类型匹配。如果需要,还可以使用Gson注释设置它们。
这里有一个很好的指南,您应该阅读:。

尝试使用类库改装从API中提取数据。你没有告诉我们这里的错误是什么。坦白说,我不理解你的问题。我没有收到错误,我不知道如何从反序列化的JSON中获取dt_txt或图标。