當前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的轉換。非常不錯!