java 解析 lib文件_JSON(三)——java中对于JSON格式数据的解析之json-lib与jackson

java中对于JSON格式数据的操作,主要是json格式字符串与JavaBean之间的相互转换。java中能够解析JSON格式数据的框架有很多,比如json-lib,jackson,阿里巴巴的fastjson,谷歌的gson,本文只要对使用时间最长的json-lib和目前应用最为广泛的jackson这两种框架的使用进行说明。

首先准备两个用于json格式字符串向JavaBean之间的相互转换的类。

public classUser {private intage;privateString name;public intgetAge() {returnage;

}public void setAge(intage) {this.age =age;

}publicString getName() {returnname;

}public voidsetName(String name) {this.name =name;

}

@OverridepublicString toString() {return "User [age=" + age + ", name=" + name + "]";

}

}

public classListUser {private ListlistUser;public ListgetListUser() {returnlistUser;

}public void setListUser(ListlistUser) {this.listUser =listUser;

}

}

我们先来看json-lib的实现

public static void main(String[] args) throwsException{

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 list = (List)jsonArray.toCollection(jsonArray, User.class);//对于"jsonStr3"这种数据格式的转换json的实现较为麻烦。//首先创建一个ListUser对象。

ListUser lu = newListUser();//json构造器

JSONObject jsonObject1 =JSONObject.fromObject(jsonStr3);//获取json数组

JSONArray jsonArray1 = (JSONArray)jsonObject1.get("listUser");//json数组转换为list集合

List list2 = (List)jsonArray.toCollection(jsonArray1, User.class);

lu.setListUser(list2);

}

再来看一下jackson对这两种数据格式的转换。主要用到jackson的ObjectMapper这个类。

public static void main(String[] args) throwsException{

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 userList = new ArrayList();

userList =(List)mapper.readValue(jsonStr2, list.getClass());

ListUser readValue = mapper.readValue(jsonStr3, ListUser.class);}

从以上两种框架的比较来看,相对于json-lib的转换来说jackson比较简单,而且从性能上来说jackson的转换速度也比较快。另外springmvc框架也包含了jackson框架,使我们在web工程中对于json的使用更加的方便。所以对于json数据格式的解析推荐是哪个jackson框架来做。

最后说一点,我们作为程序员,研究问题还是要仔细深入一点的。当你对原理了解的有够透彻,开发起来也就得心应手了,很多开发中的问题和疑惑也就迎刃而解了,而且在面对其他问题的时候也可做到触类旁通。当然在开发中没有太多的时间让你去研究原理,开发中要以实现功能为前提,可等项目上线的后,你有大把的时间或者空余的时间,你大可去刨根问底,深入的去研究一项技术,为觉得这对一名程序员的成长是很重要的事情。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值