一,fastjson
fastjson是一個性能很好的json解析器和生成器。主要特點:快速,強大,零依賴。
fastjson完全支持https://json.org的標準,支持各種JDK類型;包括javabean、collection、map、enum、泛型、基本類型等,除了JDK以外不依賴其他任何類庫,能夠直接運行在javaSE5.0以上版本。
二,parseobject
Json.parseObject(string str)是將參數轉化為相應的jsonobject對象,其中參數是鍵值對形式的jso字符串。轉化為jsonobject對象之后就可以使用其內置的方法。
三、JSON.parseObject(String str)與JSONObject.parseObject(String str)的區別
根據源碼顯示:JSON是一個抽象類,JSON中有一個靜態方法parseObject(String text),將text解析為一個JSONObject對象并返回;JSONObject是一個繼承自JSON的類,當調用JSONObject.parseObject(result)時,會直接調用父類的parseObject(String text)。所以兩者沒什么區別,一個是用父類去調用父類自己的靜態的parseObject(String text),一個是用子類去調用父類的靜態parseObject(String text),兩者調的是同一個方法。
fastJson對于json格式字符串的解析主要用到了一下三個類:
JSON:fastJson的解析器,用于JSON格式字符串與JSON對象及javaBean之間的轉換。
JSONObject:fastJson提供的json對象。
JSONArray:fastJson提供json數組對象。
我們可以把JSONObject當成一個Map<String,Object>來看,只是JSONObject提供了更為豐富便捷的方法,方便我們對于對象屬性的操作
由于JSONObject和JSONArray繼承了JSON,所以說也可以直接使用兩者對JSON格式字符串與JSON對象及javaBean之間做轉換,不過為了避免混淆我們還是使用JSON。
//json字符串-簡單對象型
private static final String? JSON_OBJ_STR ="{\"studentName\":\"lily\",\"studentAge\":12}";
//json字符串-數組類型
private static final String? JSON_ARRAY_STR ="[{\"studentName\":\"lily\",\"studentAge\":12},{\"studentName\":\"lucy\",\"studentAge\":15}]";
//復雜格式json字符串
private static final String? COMPLEX_JSON_STR ="{\"teacherName\":\"crystall\",\"teacherAge\":27,\"course\":{\"courseName\":\"english\",\"code\":1270},\"students\":[{\"studentName\":\"lily\",\"studentAge\":12},{\"studentName\":\"lucy\",\"studentAge\":15}]}";
示例1:JSON格式字符串與JSON對象之間的轉換。
示例1.1-json字符串-簡單對象型與JSONObject之間的轉換
? /**
? ? * json字符串-簡單對象型與JSONObject之間的轉換
? ? */
? public static void testJSONStrToJSONObject(){
? ? ? JSONObject jsonObject = JSON.parseObject(JSON_OBJ_STR);
? ? ? //JSONObject jsonObject1 = JSONObject.parseObject(JSON_OBJ_STR); //因為JSONObject繼承了JSON,所以這樣也是可以的
? ? ? System.out.println(jsonObject.getString("studentName")+":"+jsonObject.getInteger("studentAge"));
? }
示例1.2-json字符串-數組類型與JSONArray之間的轉換
? /**
? ? * json字符串-數組類型與JSONArray之間的轉換
? ? */
? public static void testJSONStrToJSONArray(){
? ? ? JSONArray jsonArray = JSON.parseArray(JSON_ARRAY_STR);
? ? ? //JSONArray jsonArray1 = JSONArray.parseArray(JSON_ARRAY_STR);//因為JSONArray繼承了JSON,所以這樣也是可以的
? ? ? //遍歷方式1
? ? ? int size = jsonArray.size();
? ? ? for (int i = 0; i < size; i++){
? ? ? ? ? JSONObject jsonObject =jsonArray.getJSONObject(i);
? ? ? ? ? System.out.println(jsonObject.getString("studentName")+":"+jsonObject.getInteger("studentAge"));
? ? ? }
? ? ? //遍歷方式2
? ? ? for (Object obj : jsonArray) {
? ? ? ? ? ? JSONObject jsonObject =(JSONObject) obj;
? ? ? ? ? System.out.println(jsonObject.getString("studentName")+":"+jsonObject.getInteger("studentAge"));
? ? ? }
? }
示例1.3-復雜json格式字符串與JSONObject之間的轉換
? /**
? ? *復雜json格式字符串與JSONObject之間的轉換
? ? */
? public static void testComplexJSONStrToJSONObject(){
? ? ? JSONObject jsonObject = JSON.parseObject(COMPLEX_JSON_STR);
? ? ? //JSONObject jsonObject1 = JSONObject.parseObject(COMPLEX_JSON_STR);//因為JSONObject繼承了JSON,所以這樣也是可以的
? ? ? String teacherName = jsonObject.getString("teacherName");
? ? ? Integer teacherAge = jsonObject.getInteger("teacherAge");
? ? ? JSONObject course = jsonObject.getJSONObject("course");
? ? ? JSONArray students = jsonObject.getJSONArray("students");
? }
1,對于JSON對象與JSON格式字符串的轉換可以直接用 toJSONString()這個方法。
2,javaBean與JSON格式字符串之間的轉換要用到:JSON.toJSONString(obj);
3,javaBean與json對象間的轉換使用:JSON.toJSON(obj),然后使用強制類型轉換,JSONObject或者JSONArray。
注:以上僅為個人學習筆記記錄,僅供參考。