java 用http远程请求另外一个服务器,并接收返回回来的json数据
json
适用于现代 C++ 的 JSON。
项目地址:https://gitcode.com/gh_mirrors/js/json
免费下载资源
·
需求场景:一个服务器的项目a需要用到另外一个服务器项目b的数据。
我这里直接在a里面发请求,请求b对应的地址,b返回的是json类型的数据,然后在a里面解析这一串json就行了。详细经过看图。
1.项目a里面发请求get或者post
//远程连接请求数据
String data = HttpUtils.get("http://192.168.1.112:8081/url", null);
2.我这里用到了一个httputils的工具类,也贴上来给大家看看,主要用于便于发送请求。
// 工具类没贴完,好多人都要源码,没必要,原生的写法就可以
3.解析数据并解析,其中解析出集合有两种方式
方式一:
//用于接收远程发来的数据集合
List<Map<String, Object>> lists = new ArrayList<Map<String,Object>>();
//远程连接请求数据
String data = HttpUtils.get("http://192.168.1.112:8081/url", null);
Gson gson = new Gson();
JsonParser parser = new JsonParser();
//json 转对象
JsonObject object=(JsonObject) parser.parse(data);
//根据发过来的数据格式 需要再转一次json
JsonObject object1 = (JsonObject) parser.parse(object.get("json").toString());
//获取json 对象的对象 里面的list集合
JsonArray array = object1.get("list").getAsJsonArray();
//循环json集合里面的数据并且放到lists里面
for (int i = 0; i < array.size(); i++) {
//获取一个subObject
JsonObject subObject = array.get(i).getAsJsonObject();
//获取属性
String id = subObject.get("id").toString();
String maintePerson = subObject.get("maintePerson").toString();
//保存属性
Map<String, Object> map = new HashMap<String, Object>();
map.put("id", id);
map.put("maintePerson", maintePerson);
//存到list
lists.add(map);
}
循环json集合里面的数据并且放到lists里面
for (int i = 0; i < array.size(); i++) {
//获取一个subObject
JsonObject subObject = array.get(i).getAsJsonObject();
//获取属性
String id = subObject.get("id").toString();
String maintePerson = subObject.get("maintePerson").toString();
//保存属性
Map<String, Object> map = new HashMap<String, Object>();
map.put("id", id);
map.put("maintePerson", maintePerson);
//存到list
lists.add(map);
}
方式二:
//用于接收远程发来的数据集合
List<Map<String, Object>> lists = new ArrayList<Map<String,Object>>();
//远程连接请求数据
String data = HttpUtils.get("http://192.168.1.112:8081/url", null);
// data = HttpUtils.post("http://192.168.1.112:8081/url", "");
Gson gson = new Gson();
JsonParser parser = new JsonParser();
//json 转对象
JsonObject object=(JsonObject) parser.parse(data);
//根据发过来的数据格式 需要再转一次json 看自己的数据格式,如果只嵌套一层是不用这一步的,如果嵌套多层 还需要多次转json
JsonObject object1 = (JsonObject) parser.parse(object.get("json").toString());
//获取json 对象的对象 里面的list集合
List<Map<String, Object>> list = gson.fromJson(object1.get("list").toString(),new TypeToken<List<Map<String, Object>>>() {}.getType());
获取json 对象的对象 里面的list集合
List<Map<String, Object>> list = gson.fromJson(object1.get("list").toString(),new TypeToken<List<Map<String, Object>>>() {}.getType());
请求之前的json数据:
转成list之后的数据:
到此全部转换完成
GitHub 加速计划 / js / json
41.72 K
6.61 K
下载
适用于现代 C++ 的 JSON。
最近提交(Master分支:1 个月前 )
960b763e
4 个月前
8c391e04
6 个月前
更多推荐
已为社区贡献1条内容
所有评论(0)