需求场景:一个服务器的项目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++) {//获取一个subObjectJsonObject 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);//存到listlists.add(map);}
循环json集合里面的数据并且放到lists里面for (int i = 0; i < array.size(); i++) {//获取一个subObjectJsonObject 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);//存到listlists.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之后的数据:
到此全部转换完成