0

我正在尝试使用我的天气 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
    }
}

谁能帮我完成这个简单的小项目,顺便说一句,我是初学者。

4

2 回答 2

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.
    }
});
于 2013-11-13T14:42:48.920 回答
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到任何你想要的,请阅读文档

于 2013-11-13T14:55:21.203 回答