博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
项目中的jackson与json-lib使用比较
阅读量:4101 次
发布时间:2019-05-25

本文共 2093 字,大约阅读时间需要 6 分钟。

原来的 项目是spring+ibatis+struts2 ,jdk1.6的框架,使用json-lib解析高德地图返回的json字符串Ok,后来项目换成springmvc+mybatis,jdk1.7,maven管理。使用json-lib报错了,刚刚好也引入了jackson这个框架,于是就考虑换成这个框架试下。OK的。下面给出这个问题的2个json解析工具的使用方式。

使用json-lib解析json格式字符串

这里写图片描述

- 将json字符串转换成json对象

JSONObject jsonObject = null;try{    jsonObject = JSONObject.fromObject(node);}catch(Exception e){    e.printStackTrace();}
  • 获取routes对象及steps数组
JSONObject routeInfo =  jsonObject.getJSONArray("routes").getJSONObject(0);  JSONArray jsonArray = routeInfo.getJSONArray("steps");

这里写图片描述

- 遍历数组及数组元素的子数组

//针对业务的编码全部略去,避免看着累,只写如何用json-lib.for(int i=0; i

使用jackson解析json格式字符串

  • 将字符串转换成jsonnode对象
ObjectMapper mapper = new ObjectMapper();JsonNode jsonObject = mapper.readTree(node);
  • 获取steps数组对象
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);}

使用jackson将json字符串转化成对象列表/数组

//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:List
myObjects = 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的,这里也推荐给大家。

你可能感兴趣的文章
分布式之redis复习精讲
查看>>
(python版)《剑指Offer》JZ01:二维数组中的查找
查看>>
(python版)《剑指Offer》JZ06:旋转数组的最小数字
查看>>
(python版)《剑指Offer》JZ13:调整数组顺序使奇数位于偶数前面
查看>>
(python版)《剑指Offer》JZ28:数组中出现次数超过一半的数字
查看>>
(python版)《剑指Offer》JZ30:连续子数组的最大和
查看>>
(python版)《剑指Offer》JZ02:替换空格
查看>>
JSP/Servlet——MVC设计模式
查看>>
使用JSTL
查看>>
Java 8新特性:Stream API
查看>>
管理用户状态——Cookie与Session
查看>>
最受欢迎的前端框架Bootstrap 入门
查看>>
JavaScript编程简介:DOM、AJAX与Chrome调试器
查看>>
通过Maven管理项目依赖
查看>>
通过Spring Boot三分钟创建Spring Web项目
查看>>
Spring的IoC(依赖注入)原理
查看>>
Java编程基础:static的用法
查看>>
Java编程基础:抽象类和接口
查看>>
Java编程基础:异常处理
查看>>
Spring MVC中使用Thymeleaf模板引擎
查看>>