使用JsonReader进行Java API调用?

时间:2017-02-18 17:23:19

标签: java json openweathermap jsonreader

所以我迷失了如何做到这一点:目标只是在java中调用openweather api并将结果返回到控制台上。我找不到有关如何执行此操作的任何教程,仅关于如何解析来自其他文件的JSON数据...

呃,这是朝着正确的方向发展的吗?不知道。根据建议修改以尝试使用Gson

import com.google.gson.JsonElement;
import com.google.gson.JsonPrimitive;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;

import javax.json.Json;
import javax.json.JsonArray;
import javax.json.JsonObject;
import javax.json.JsonReader;
import javax.json.JsonValue;


public class ApiJSONRead {

    URL apiURL = new URL("http://api.openweathermap.org/data/2.5/find?q=London&APPID=(idhere)");

    public static void main(String[] args) throws IOException {



        JsonObject jobj = new Gson().fromJson(apiURL, JsonObject.class);
        var Jsonresponse = jobj.get("weather").getAsString();


        System.out.println(Jsonresponse);

    }

}

4 个答案:

答案 0 :(得分:1)

排序,尽管其中一位评论者指出,运行您的代码。它不会起作用。一旦你得到了流,你所拥有的应该是有用的。但apiURL不是文件,因此FileInputStream无法理解如何阅读它。查看Apache HttpComponents。具体来说,here's示例显示了如何发出GET请求,这正是您要做的事情。

答案 1 :(得分:1)

要解析JSON数据,可以使用google API gson

e.g。

    JsonObject jobj = new Gson().fromJson(response, JsonObject.class);
    jsonresponse = jobj.get("message").getAsString();

答案 2 :(得分:1)

检查以下代码并导入必要的罐子

import java.io.IOException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;

import com.google.gson.Gson;
import com.google.gson.JsonObject;


public class ApiJSONRead {



    public static void main(String[] args) throws IOException {


        HttpClient client = new DefaultHttpClient();
        HttpGet request = new HttpGet("http://ip.jsontest.com/");
        org.apache.http.HttpResponse httpResponse = client.execute(request);
        String response = EntityUtils.toString(httpResponse.getEntity());
        System.out.println(response);
        JsonObject jobj = new Gson().fromJson(response, JsonObject.class);
        String Jsonresponse = jobj.get("ip").getAsString();
        System.out.println(Jsonresponse);
    }

}

答案 3 :(得分:0)

我是Sprinkler开源项目的提交者。参见http://wiki.bitplan.com/index.php/Sprinkler 作为该项目的一部分,我正在实现必要的开放天气API调用。 您可能想看看

https://github.com/BITPlan/com.bitplan.sprinkler/blob/master/src/test/java/com/bitplan/sprinkler/TestWeatherReport.java

https://github.com/BITPlan/com.bitplan.sprinkler/blob/master/src/main/java/org/openweathermap/weather/WeatherReport.java

还有一个JsonUtil帮助器类,该类隐藏了如何从url获取json字符串的详细信息。