从URL读取Java JSON

时间:2013-11-13 14:30:04

标签: java json weather-api

我正在尝试使用我的天气API来获取某个区域的天气状况,我认为除了数据解析部分外,我的所有功能都已正常运行。

import java.net.*;
import java.io.*;
import com.google.gson.*;

public class URLReader {

    public static URL link;

    public static void main(String[] args) {
        try{
            open();
            read();
        }catch(IOException e){}
    }

    public static void open(){
        try{
            link = new URL("http://api.wunderground.com/api/54f05b23fd8fd4b0/geolookup/conditions/forecast/q/US/CO/Denver.json");
        }catch(MalformedURLException e){}
    }
    public static void read() throws IOException{
        //little bit stuck here
    }
}

任何人都可以帮我完成这个简单的小项目,我是初学者。

2 个答案:

答案 0 :(得分:1)

您可以使用javaQuery更轻松地执行此操作:

$.getJSON("http://api.wunderground.com/api/54f05b23fd8fd4b0/geolookup/conditions/forecast/q/US/CO/Denver.json", null, new Function() {
    @Override
    public void invoke($ j, Object... args) {
        //if you are expecting a JSONObject, use:
        JSONObject json = (JSONObject) args[0];

        //otherwise, it would be: JSONArray json = (JSONArray) args[0];

        //Then to more easily parse the JSON, do this:
        Map<String, ?> map = $.map(json)

        //if you are using an array instead, you can use: Object[] array = $.makeArray(json);

        //Now just iterate through your map (or list) to get the data you want to parse.
    }
});

答案 1 :(得分:1)

只需从URL打开连接并尝试从中读取JSON:

public static void read() throws IOException{
    InputStream is = null;
    try {
        is = link.openConnection().getInputStream();

        Reader reader = new InputStreamReader(is);

        Map<String, String> jsonObj = gson.fromString(reader, new TypeToken<Map<String, String>>() {}.getType());

        //TODO do next stuff
    } finally{
        if (is != null){
            is.close();
        }
    }
}

如果您愿意,可以将jsonObj绑定到您想要的任何内容,请阅读documentation