如何从 HttpURLConnection 读取 json 数据
Posted
技术标签:
【中文标题】如何从 HttpURLConnection 读取 json 数据【英文标题】:How to read json data from HttpURLConnection 【发布时间】:2016-04-26 06:22:36 【问题描述】:我正在使用来自 application1 的 HttpURLConnection 从 applicaton2 获取 json 数据。 'application2' 在 Rest 响应对象中设置 json 数据。在 application1 中获得响应后如何读取该 json 数据。
示例代码:
应用程序1:
url = "url to application2";
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.connect();
应用程序2":
List<ModelA> lListModelAs = Entities data;
GenericEntity<List<ModelA>> lEntities = new GenericEntity<List<ModelA>>(lListModelAs) ;
lResponse = Response.ok(lEntities ).build();
我需要从响应的urlConnection中读取上面的json数据。
有什么提示吗?提前致谢。
【问题讨论】:
【参考方案1】:设置您的 HttpURLConnection 之后。
BufferedReader reader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
StringBuilder response = new StringBuilder();
String line;
JsonObject obj = new JsonParser().parse(reader).getAsJsonObject();
boolean status = contentObj.get("status").getAsBoolean();
String Message = contentObj.get("msg").getAsString();
String Regno = contentObj.get("regno").getAsString();
String User_Id = contentObj.get("userid").getAsString();
String SessionCode = contentObj.get("sesscode").getAsString();
你可以在这里下载 gson jar enter link description here
【讨论】:
【参考方案2】:使用专用库进行 json 序列化/反序列化,例如 Jackson。它将允许您直接从InputStream
将 json 内容读取到映射响应的 POJO 中。会是这样的:
MyRestResponse response=objectMapper.readValue(urlConnection.getInput(),MyRestResponse.class);
看起来不错是不是?
这里有包含使用示例的 Jackson 项目 GitHub 页面。 https://github.com/FasterXML/jackson
【讨论】:
感谢您的回答。这将读入单个对象,但我希望它作为列表,该怎么做? 您可以拥有任何您想要的对象列表等。例如,MyRestResponse response
你可以拥有List<SomeJSONMappedObjectPOJO> response
【参考方案3】:
你可以使用 gson 库 https://github.com/google/gson 用于解析您的数据
Gson gson = new Gson();
YourClass objOfYourClass = gson.fromJson(urlConnection.getInputStream(), YourClass.class);
【讨论】:
感谢您的回答。这将读入单个对象,但我希望它作为列表,该怎么做? 一种方法是 YourClass[].class以上是关于如何从 HttpURLConnection 读取 json 数据的主要内容,如果未能解决你的问题,请参考以下文章
HttpURLConnection读取403错误的响应内容[重复]
如何从 HttpURLConnection 实例获取 HTTP 请求字符串
HttpURLConnection 通过代理访问时返回 503 错误
HttpURLConnection 返回的 InputStream 中的数据在你读取之前存储在哪里?