Gson的使用汇总
当前json是比较流行的文本数据传输格式,结构整齐、简单。基于json的开源解析包也是很多,个人感觉比较好的两种,fastJson、Gson,fastJson号称是解析json最快的,牛逼不是吹的,我以前用过很大数据量的json去测试,fastJson解析速度确实是最快的,但是个人还是比较喜欢Gson(Gson的速度也是很快的),API简单,调用方便。下面讲解一下Gson的使用方法。
在GsonAPI中有个JsonElement类,它是JsonObject和JsonArray、JsonNull的父类,如果你知道JsonElement具体是什么对象,就可以强制转换。如下:
String test = "{\"msgBody\":{\"ticketInfos\":[{\"useType\":\"4\",\"orgCode\":\"0301\",\"xf\":\"A\",\"beginNo\":\"00001\",\"endNo\":\"99999\",\"operationDate\":\"20131116\",\"operationTime\":\"170829\"},{\"useType\":\"4\",\"orgCode\":\"0301\",\"xf\":\"B\",\"beginNo\":\"00001\",\"endNo\":\"99999\",\"operationDate\":\"20131116\",\"operationTime\":\"170829\"},{\"useType\":\"4\",\"orgCode\":\"0301\",\"xf\":\"C\",\"beginNo\":\"00001\",\"endNo\":\"99999\",\"operationDate\":\"20131116\",\"operationTime\":\"170829\"}]},\"msgHead\":{\"msgId\":\"X420131116180838\",\"operateOrgCode\":\"0301\",\"workDate\":\"20131116\",\"workTime\":\"180838\",\"workType\":\"X4\"}}";
JsonParser parser = new JsonParser();
//这里我知道它是一个jsonObject,那么我就强制转换了,当然最好你去instanceOf一下
JsonObject job = (JsonObject) parser.parse(test);
JsonArray object = (JsonArray) ((JsonObject) job.get("msgBody"))
.get("ticketInfos");
String back = object.toString();
System.out.println(back);
上面是普通的json解析,貌似跟其他解析工具差不多,但是它还有更强大的功能就是Gson这个类,有一系列的toJson、fromJson方法,很多都是采用反射机制实现的,你想要把json字符串转换成什么对象只需要传入class类型就OK了。不管是多复杂的json格式,你只要按照json格式定义一个对象,如下代码中
message = new Message();
Gson gson=new Gson();
message=gson.fromJson(json, Message.class);
message就是按照json格式定义了msgBody、msgHead对象。直接通过Gson这个类,简单几行代码就完成了json字符串到JavaBean的转换。非常不错!