JSON(三)——java中对于JSON格式数据的解析之json-lib与jackson
2017-02-13 21:30
501 查看
java中对于JSON格式数据的操作,主要是json格式字符串与JavaBean之间的相互转换。java中能够解析JSON格式数据的框架有很多,比如json-lib,jackson,阿里巴巴的fastjson,谷歌的gson,本文只要对使用时间最长的json-lib和目前应用最为广泛的jackson这两种框架的使用进行说明。
首先准备两个用于json格式字符串向JavaBean之间的相互转换的类。
我们先来看json-lib的实现
再来看一下jackson对这两种数据格式的转换。主要用到jackson的ObjectMapper这个类。
从以上两种框架的比较来看,相对于json-lib的转换来说jackson比较简单,而且从性能上来说jackson的转换速度也比较快。另外springmvc框架也包含了jackson框架,使我们在web工程中对于json的使用更加的方便。所以对于json数据格式的解析推荐是哪个jackson框架来做。
最后说一点,我们作为程序员,研究问题还是要仔细深入一点的。当你对原理了解的有够透彻,开发起来也就得心应手了,很多开发中的问题和疑惑也就迎刃而解了,而且在面对其他问题的时候也可做到触类旁通。当然在开发中没有太多的时间让你去研究原理,开发中要以实现功能为前提,可等项目上线的后,你有大把的时间或者空余的时间,你大可去刨根问底,深入的去研究一项技术,为觉得这对一名程序员的成长是很重要的事情。
首先准备两个用于json格式字符串向JavaBean之间的相互转换的类。
public class User { private int age; private String name; public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "User [age=" + age + ", name=" + name + "]"; } }
public class ListUser { private List<User> listUser; public List<User> getListUser() { return listUser; } public void setListUser(List<User> listUser) { this.listUser = listUser; } }
我们先来看json-lib的实现
public static void main(String[] args) throws Exception{ String jsonStr1 = "{\"name\":\"张三\",\"age\":23}"; String jsonStr2 = "[{\"name\":\"张三\",\"age\":1},{\"name\":\"李四\",\"age\":24}]"; String jsonStr3 = "{\"listUser\": [{\"name\":\"张三\",\"age\":1},{\"name\":\"李四\",\"age\":24}] }"; //json-lib中json对象的构造器 JSONObject jsonObject = JSONObject.fromObject(jsonStr1); //转换javaBean User user = (User)JSONObject.toBean(jsonObject, User.class); //json-lib中json数组的构造器 JSONArray jsonArray = JSONArray.fromObject(jsonStr2); //json数组转换为list集合 List<User> list = (List<User>)jsonArray.toCollection(jsonArray, User.class); //对于"jsonStr3"这种数据格式的转换json的实现较为麻烦。 //首先创建一个ListUser对象。 ListUser lu = new ListUser(); //json构造器 JSONObject jsonObject1 = JSONObject.fromObject(jsonStr3); //获取json数组 JSONArray jsonArray1 = (JSONArray)jsonObject1.get("listUser"); //json数组转换为list集合 List<User> list2 = (List<User>)jsonArray.toCollection(jsonArray1, User.class); lu.setListUser(list2); }
再来看一下jackson对这两种数据格式的转换。主要用到jackson的ObjectMapper这个类。
public static void main(String[] args) throws Exception{ String jsonStr1 = "{\"name\":\"张三\",\"age\":23}"; String jsonStr2 = "[{\"name\":\"张三\",\"age\":1},{\"name\":\"李四\",\"age\":24}]"; String jsonStr3 = "{\"listUser\": [{\"name\":\"张三\",\"age\":1},{\"name\":\"李四\",\"age\":24}] }"; ObjectMapper mapper = new ObjectMapper(); User user = mapper.readValue(jsonStr1, User.class); List<User> userList = new ArrayList<User>(); userList =(List<User>)mapper.readValue(jsonStr2, list.getClass()); ListUser readValue = mapper.readValue(jsonStr3, ListUser.class); }
从以上两种框架的比较来看,相对于json-lib的转换来说jackson比较简单,而且从性能上来说jackson的转换速度也比较快。另外springmvc框架也包含了jackson框架,使我们在web工程中对于json的使用更加的方便。所以对于json数据格式的解析推荐是哪个jackson框架来做。
最后说一点,我们作为程序员,研究问题还是要仔细深入一点的。当你对原理了解的有够透彻,开发起来也就得心应手了,很多开发中的问题和疑惑也就迎刃而解了,而且在面对其他问题的时候也可做到触类旁通。当然在开发中没有太多的时间让你去研究原理,开发中要以实现功能为前提,可等项目上线的后,你有大把的时间或者空余的时间,你大可去刨根问底,深入的去研究一项技术,为觉得这对一名程序员的成长是很重要的事情。
相关文章推荐
- Json数据格式解析示例 (语言:Java 包:org.json.jar)
- Json-lib, 实现Java对象与JSON数据格式的互转
- java 解析json格式数据(转)
- 很好用的Google 开源项目Gson在java中解析和创建json格式的数据
- Java创建和解析Json数据方法(三)——json-lib包的使用
- java 解析Json格式数据
- 百度天气api开发 全解析xml和json格式 使用json-lib jsonObject、 Gson 方式把json 转换成 java对象
- java 解析json格式数据
- Java使用jackson操作Json格式数据
- json-lib:java产生json数据以及json数据在javascript中解析
- Json-lib, 实现Java对象与JSON数据格式的互转
- Java解析JSON格式数据一
- Java解析JSON格式数据三
- Java解析JSON格式数据二
- java中对JSON格式数据进行解析和映射
- Java解析JSON格式的数据
- 通过java代码对json格式数据进行解析
- java 解析json格式数据
- java中解析json格式数据