我一直在尝试弄清楚如何处理 GET 请求的 json 响应。这是我的请求代码:
String urlString = URL I want to request;
URL url = new URL(urlString);
URLConnection conn = url.openConnection();
InputStream is = conn.getInputStream();
String response = getStringFromInputStream(is);
我的问题是现在该怎么办。我一直在玩 gson,但我不知道如何解析所需信息的响应。
我还在网上找到了这个方法,可以将响应转换为字符串:
private static String getStringFromInputStream(InputStream is) {
BufferedReader br = null;
StringBuilder sb = new StringBuilder();
String line;
try {
br = new BufferedReader(new InputStreamReader(is));
while ((line = br.readLine()) != null) {
sb.append(line);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return sb.toString();
}
如果有人可以帮助我解析字符串或以其他方式处理响应,我将非常感激。
最佳答案
您可以使用Jackson
框架将响应解析为 Java 对象。添加依赖项后,它将如何工作:
假设您从 API 收到以下响应:
{
"id": 1,
"name": "foo"
}
您可以编写以下代码将其反序列化为对象:
public class Response {
private int id;
private String name;
//Getters and Setters
}
//code to convert
String response = sb.toString();
ObjectMapper mapper = new ObjectMapper();
Response responseObject = mapper.readValue(response, Response.class);
如果 json 无效,则会失败并抛出 JsonParseException
或 JsonMappingException
。您可以在代码中处理它并做出相应的响应。
Here's关于如何使用 Jackson 的分步教程。
关于java - 使用 java 处理 Json API 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54352625/