本文共 2093 字,大约阅读时间需要 6 分钟。
原来的 项目是spring+ibatis+struts2 ,jdk1.6的框架,使用json-lib解析高德地图返回的json字符串Ok,后来项目换成springmvc+mybatis,jdk1.7,maven管理。使用json-lib报错了,刚刚好也引入了jackson这个框架,于是就考虑换成这个框架试下。OK的。下面给出这个问题的2个json解析工具的使用方式。
- 将json字符串转换成json对象
JSONObject jsonObject = null;try{ jsonObject = JSONObject.fromObject(node);}catch(Exception e){ e.printStackTrace();}
JSONObject routeInfo = jsonObject.getJSONArray("routes").getJSONObject(0); JSONArray jsonArray = routeInfo.getJSONArray("steps");
- 遍历数组及数组元素的子数组
//针对业务的编码全部略去,避免看着累,只写如何用json-lib.for(int i=0; i
ObjectMapper mapper = new ObjectMapper();JsonNode jsonObject = mapper.readTree(node);
JsonNode steps = jsonObject.get("routes").get(0).get("steps");
for (JsonNode stepNode : steps) { //取某个字段的值 String road = stepNode.path("road").asText(); String instruction = stepNode.path("instruction").asText(); section.setLongitude(stepNode.get("start_location").path("lng").asText()); section.setLatitude(stepNode.get("start_location").path("lat").asText()); section.setLongitude(stepNode.get("end_location").path("lng").asText()); section.setLatitude(stepNode.get("end_location").path("lat").asText()); //取子数组并遍历 JsonNode polyLineArray = stepNode.get("tmcs"); String polyLine = ""; for(JsonNode polyLineNode:polyLineArray){ polyLine += polyLineNode.path("polyline").asText()+";"; } polyLine = polyLine.substring(0, polyLine.length()-1);}
//First create a mapper :import com.fasterxml.jackson.databind.ObjectMapper;// in play 2.3ObjectMapper mapper = new ObjectMapper();//As Array:MyClass[] myObjects = mapper.readValue(json, MyClass[].class);//As List:ListmyObjects = mapper.readValue(jsonInput, new TypeReference
>(){});//Another way to specify the List type:List myObjects = mapper.readValue(jsonInput, mapper.getTypeFactory().constructCollectionType(List.class, MyClass.class));
在国外网站看到一篇文章关于如何使用jackson的,这里也推荐给大家。