Java 使用GSON解析JSON格式?
通过HTTPURLCONNECTION,我能够获得JSON响应,并且使用Writer,我也能够将其保存到output.JSON文件中。但我无法读取output.json的内容,也无法使用GSON直接从url读取内容。使用gson时,我面临的问题很少Java 使用GSON解析JSON格式?,java,json,gson,httpurlconnection,Java,Json,Gson,Httpurlconnection,通过HTTPURLCONNECTION,我能够获得JSON响应,并且使用Writer,我也能够将其保存到output.JSON文件中。但我无法读取output.json的内容,也无法使用GSON直接从url读取内容。使用gson时,我面临的问题很少 public class ConnectToUrlUsingBasicAuthentication { public static void main(String[] args) { try {
public class ConnectToUrlUsingBasicAuthentication {
public static void main(String[] args) {
try {
String webPage = "http://somesite.com/json/server.json";
//HTTPURLCONNECTION
URL url = new URL(webPage);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("Accept", "application/json");
StringBuilder sb = new StringBuilder();
InputStream is = conn.getInputStream();
InputStreamReader isr = new InputStreamReader(is,Charset.defaultCharset());
BufferedReader bufferedReader = new BufferedReader(isr);
String line;
while((line = bufferedReader.readLine()) != null) {
System.out.println("*** BEGIN ***");
try(Writer writer = new OutputStreamWriter(new FileOutputStream("Output.json") , "UTF-8")){
Gson gson = new GsonBuilder().create();
gson.toJson(line, writer);
System.out.println("Written successfully");
}
System.out.println(line);
System.out.println("*** END ***");
try(Reader reader = new InputStreamReader(is, "UTF-8")){
Gson gson = new GsonBuilder().create();
JsonData p = gson.fromJson(reader, JsonData.class);
System.out.println(p);
}
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
在gson.fromjson调用期间传递的另一个类是Jsondata
为变量p打印的值为空
有人能帮我用Gson打印变量p中的Json响应吗。请等到您阅读了整个响应正文之后,再尝试用Gson转换它
try (Writer writer = new OutputStreamWriter(
new FileOutputStream("Output.json") , "UTF-8")) {
Gson gson = new GsonBuilder().create();
while((line = bufferedReader.readLine()) != null) {
gson.toJson(line, writer);
}
}
// Now read it.
try (Reader reader = new InputStreamReader(is, "UTF-8")){
Gson gson = new GsonBuilder().create();
JsonData p = gson.fromJson(reader, JsonData.class);
System.out.println(p);
}
当您将InputStream写入文件时,您将使用它。也许这就是问题所在。到底是什么错误?你有stacktrace吗?我没有收到任何错误。但是我尝试了使用null而不是JSON内容打印的值。但我仍然面临着获取JSON响应的问题。我得到的是空值
line = {
"body":
{"items":[
{"name":"server","state":"RUNNING","health":"HEALTH_OK"},
{"name":"server1","state":"RUNNING","health":"HEALTH_OK"},
{"name":"server2","state":"RUNNING","health":"HEALTH_OK"}
]},
"messages":[]}
try (Writer writer = new OutputStreamWriter(
new FileOutputStream("Output.json") , "UTF-8")) {
Gson gson = new GsonBuilder().create();
while((line = bufferedReader.readLine()) != null) {
gson.toJson(line, writer);
}
}
// Now read it.
try (Reader reader = new InputStreamReader(is, "UTF-8")){
Gson gson = new GsonBuilder().create();
JsonData p = gson.fromJson(reader, JsonData.class);
System.out.println(p);
}