1. 程式人生 > >使用 fastjson 在java中進行 json字串和物件的互轉

使用 fastjson 在java中進行 json字串和物件的互轉

前提:我們在這裡只使用fastjson的轉json的jar依賴包

      <!-- 轉json字串 -->
<dependency>  
   <groupId>
com.alibaba</groupId>  
   <artifactId>
fastjson</artifactId>  
   <version>1.2.28</version>  
</dependency> 

1.物件POJO和JSON互轉

複製程式碼複製程式碼
public class JsonUtil {
    /**
     * JSON 轉 POJO
     */
     public static <T> T getObject(String pojo, Class<T> tclass) {
            try {
                return JSONObject.parseObject(pojo, tclass);
            } catch (Exception e) {
                log.error(tclass + "轉 JSON 失敗");
            }
            return null;
     }
     
     /**
      * POJO 轉 JSON    
      */
     public static <T> String getJson(T tResponse){
         String pojo = JSONObject.toJSONString(tResponse);
         return pojo;
     }
     
}
複製程式碼複製程式碼

2. List集合和JSON互轉工具類

public class JsonListUtil {
    /**
     * List<T> 轉 json 儲存到資料庫
     */
    public static <T> String listToJson(List<T> ts) {
        String jsons = JSON.toJSONString(ts);
        return jsons;
    }

    /**
     * json 轉 List<T>
     */
    public static <T> List<T> jsonToList(String jsonString, Class<T> clazz) {
        @SuppressWarnings("unchecked")
        List<T> ts = (List<T>) JSONArray.parseArray(jsonString, clazz);
        return ts;
    }

}

3.JSON字串自動 轉換 

  1. /** 
  2.  * JSON字串自動轉換 
  3.  * Created by zkn on 2016/8/22. 
  4.  */  
  5. public class JsonToMapTest01 {  
  6.     public static void main(String[] args){  
  7.         String str = "{\"0\":\"zhangsan\",\"1\":\"lisi\",\"2\":\"wangwu\",\"3\":\"maliu\"}";  
  8.         //第一種方式: 轉Map 物件  
  9.         Map maps = (Map)JSON.parse(str);  
  10.         System.out.println("這個是用JSON類來解析JSON字串!!!");  
  11.         for (Object map : maps.entrySet()){  
  12.             System.out.println(((Map.Entry)map).getKey()+"     " + ((Map.Entry)map).getValue());  
  13.         }  
  14.         //第二種方式: 轉Map 物件  
  15.         Map mapTypes = JSON.parseObject(str);  
  16.         System.out.println("這個是用JSON類的parseObject來解析JSON字串!!!");  
  17.         for (Object obj : mapTypes.keySet()){  
  18.             System.out.println("key為:"+obj+"值為:"+mapTypes.get(obj));  
  19.         }  
  20.         //第三種方式: 轉Map 物件  
  21.         Map mapType = JSON.parseObject(str,Map.class);  
  22.         System.out.println("這個是用JSON類,指定解析型別,來解析JSON字串!!!");  
  23.         for (Object obj : mapType.keySet()){  
  24.             System.out.println("key為:"+obj+"值為:"+mapType.get(obj));  
  25.         }  
  26.         //第四種方式: 轉Map 物件  
  27.         /** 
  28.          * JSONObject是Map介面的一個實現類 
  29.          */  
  30.         Map json = (Map) JSONObject.parse(str);  
  31.         System.out.println("這個是用JSONObject類的parse方法來解析JSON字串!!!");  
  32.         for (Object map : json.entrySet()){  
  33.             System.out.println(((Map.Entry)map).getKey()+"  "+((Map.Entry)map).getValue());  
  34.         }  
  35. //第五種方式:json字串 轉 json物件  
  36.         /** 
  37.          * JSONObject是Map介面的一個實現類 
  38.          */  
  39.         JSONObject jsonObject = JSONObject.parseObject(str);  
  40.         System.out.println("這個是用JSONObject的parseObject方法來解析JSON字串!!!");  
  41.         for (Object map : json.entrySet()){  
  42.             System.out.println(((Map.Entry)map).getKey()+"  "+((Map.Entry)map).getValue());  
  43.         }  
  44. //第六種方式: 轉Map 物件
  45.         /** 
  46.          * JSONObject是Map介面的一個實現類 
  47.          */  
  48.         Map mapObj = JSONObject.parseObject(str,Map.class);  
  49.         System.out.println("這個是用JSONObject的parseObject方法並執行返回型別來解析JSON字串!!!");  
  50.         for (Object map: json.entrySet()){  
  51.             System.out.println(((Map.Entry)map).getKey()+"  "+((Map.Entry)map).getValue());  
  52.         }       
  53.         System.out.println(json);  
  54.     }  

4. Map集合和JSON互轉

   a). map 轉 json字串 
String jsonStr = JSON.toJSONString(myMap);

b). json字串 轉 map

     Map mapTypes = JSON.parseObject(str); 

4. JSON物件 和 json字串 互轉

      a).  String jsonStr = jsonObj.toString();

      b).  JSONObject jsonobject = JSONObject.parseObject(jsonStr);  

5.  java實體類 和 json字串 互轉

  1. package fastJson.test;  
  2. import com.alibaba.fastjson.JSON;  
  3. import com.alibaba.fastjson.JSONObject;  
  4. import com.alibaba.fastjson.serializer.SerializerFeature;  
  5. public class FastJsonTest  
  6. {  
  7.     /** 
  8.      *  java例項 轉 json字串
  9.      */  
  10.     public void toJsonString()  
  11.     {  
  12.         User user = new User("testFastJson001", "maks", 105);  
  13.         String text = JSON.toJSONString(user);  
  14.         System.out.println("toJsonString()方法:text=" + text);  
  15.         // 輸出結果:text={"age":105,"id":"testFastJson001","name":"maks"}  
  16.     }  
  17.     /** 
  18.      * json字串 反序列化為 json物件 
  19.      */  
  20.     public void parseJsonObject()  
  21.     {  
  22.         String text = "{\"age\":105,\"id\":\"testFastJson001\",\"name\":\"maks\"}";  
  23.         JSONObject json = JSON.parseObject(text);  
  24.         System.out.println("parseJsonObject()方法:json==" + json);  
  25.         // 輸出結果:json=={"age":105,"id":"testFastJson001","name":"maks"}  
  26.     }  
  27.     /** 
  28.      * json字串 轉 java例項
  29.      */  
  30.     public void parseBeanObject()  
  31.     {  
  32.         String text = "{\"age\":105,\"id\":\"testFastJson001\",\"name\":\"maks\"}";  
  33.         User user = (User) JSON.parseObject(text, User.class);  
  34.         System.out.println("parseBeanObject()方法:user==" + user.getId() + "," + user.getName() + "," + user.getAge());  
  35.         // 輸出結果:user==testFastJson001,maks,105  
  36.     }  
  37.     /** 
  38.      * java例項 轉 json物件 
  39.      */  
  40.     public void bean2Json()  
  41.     {  
  42.         User user = new User("testFastJson001", "maks", 105);  
  43.         JSONObject jsonObj = (JSONObject) JSON.toJSON(user);  
  44.         System.out.println("jsonObj==" + jsonObj);  
  45.         // 輸出結果:jsonObj=={"age":105,"id":"testFastJson001","name":"maks"}  
  46.     }  
  47.     /** 
  48.      * 全序列化 直接把java bean序列化為json文字之後,能夠按照原來的型別反序列化回來。支援全序列化,需要開啟SerializerFeature.WriteClassName特性 
  49.      */  
  50.     public void parseJSONAndBeanEachother()  
  51.     {  
  52.         User user = new User("testFastJson001", "maks", 105);  
  53.         SerializerFeature[] featureArr = { SerializerFeature.WriteClassName };  
  54.         String text = JSON.toJSONString(user, featureArr);  
  55.         System.out.println("parseJSONAndBeanEachother()方法:text==" + text);  
  56.         // 輸出結果:text=={"@type":"fastJson.test.User","age":105,"id":"testFastJson001","name":"maks"}  
  57.         User userObj = (User) JSON.parse(text);  
  58.         System.out.println("parseJSONAndBeanEachother()方法:userObj==" + userObj.getId() + "," + userObj.getName() + "," + userObj.getAge());  
  59.         // 輸出結果:userObj==testFastJson001,maks,105  
  60.     }  
  61.     public static void main(String[] args)  
  62.     {  
  63.         FastJsonTest test = new FastJsonTest();  
  64.         // 序列化  
  65.         test.toJsonString();  
  66.         // 反序列化為json物件  
  67.         test.parseJsonObject();  
  68.         // 反序列化為javaBean物件  
  69.         test.parseBeanObject();  
  70.         // 將javaBean轉化為json物件  
  71.         test.bean2Json();  
  72.         // 全序列化  
  73.         test.parseJSONAndBeanEachother();  
  74.     }  
  75. }  

             控制檯輸出結果:

  1. toJsonString()方法:text={"age":105,"id":"testFastJson001","name":"maks"}  
  2. parseJsonObject()方法:json=={"age":105,"id":"testFastJson001","name":"maks"}  
  3. parseBeanObject()方法:user==testFastJson001,maks,105  
  4. bean2Json()方法:jsonObj=={"age":105,"id":"testFastJson001","name":"maks"}  
  5. parseJSONAndBeanEachother()方法:text=={"@type":"fastJson.test.User","age":105,"id":"testFastJson001","name":"maks"}  
  6. parseJSONAndBeanEachother()方法:userObj==testFastJson001,maks,105   

           附:


相關推薦

使用 fastjsonjava進行 json字串物件

前提:我們在這裡只使用fastjson的轉json的jar依賴包      <!-- 轉json字串 --><dependency>      <groupId>com.alibaba</groupId>      <ar

JSON字串物件並解決json物件首字母小寫

首先假設有一個實體物件user: private String UserId; @JSONField(name="UserId") private String getUserId (){ return UserId; } private String setUserId(Stri

Swift3 JSON字串字典JSON字串字典字典JSON字串

https://www.cnblogs.com/yajunLi/p/6549859.html 直接上程式碼吧 1、JSONString轉換為字典 /// JSONString轉換為字典 /// /// - Parameter jsonStrin

fastJson常用JSON字串Java物件

1.使用fastJson,首先引入fastJson依賴 <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson --> <dependency> <groupId>com.alibaba<

JAVA 提取 JSON 字串的 KEY VALUE 值

JSONObject jobj = JSONObject.fromObject(conditions == null ? "{}" : conditions); Iterator it = jobj.keys(); String infotype = "

java的類鎖物件鎖對比分析

      說到鎖機制,不得不提到Thread執行緒,而又不得不提到synchronized關鍵字,這個單詞的意思是表示“同步”的意思。用它去修飾方法函式的時候,如果有多個執行緒同時呼叫這個方法函式的時候,那麼當一個執行緒獲得鎖的時候,其他的執行緒只

Json字串物件之間的區別轉化

一、什麼是Json? Json是一種輕量級的資料交換格式。 {} 花括號表示物件,[] 中括號表示陣列,”” 雙引號內是屬性或值,: 冒號表示後者是前者的值(這個值可以是字串、數字、也可以是另一個數組或物件)。 二、什麼是Json物件?什麼是Json字串? (i)Json物件:是直接可以使用

利用Google Gson實現JSON字串物件之間相互轉換

最近一個專案需要用到JSON,需要在JSON字串和物件之間相互轉換,在網上找了些資料,發現google的Gson還是比較不錯的。 廢話不說,下面是簡單的例子: 先上原始碼:下載(包含jar包) Person實體類 package com.hsun.json; /** * Pe

Java進行序列化反序列化

物件序列化的目標是將物件儲存在磁碟中,或者允許在網路中直接傳輸物件。     物件序列化允許把記憶體中的Java物件轉換成平臺無關的二進位制流,從而允許把這種二進位制流持久儲存在磁碟上或者通過網路將這種二進位制流傳輸到另外一個網路節點。     其他程式一旦

java擷取string字串以逗號分割,StringBuffer的運用

package com.yanshu.test; import com.yanshu.utils.ConnSql; public class StringBu {/*** 傳入引數即儲存名稱預編譯處理* @param storageName 儲存過程的名稱* @param

Java類載入過程物件建立過程

類載入過程: 1, JVM會先去方法區中找有沒有相應類的.class存在。如果有,就直接使用;如果沒有,則把相關類的.class載入到方法區 2, 在.class載入到方法區時,會分為兩部分載入:先載入非靜態內容,再載入靜態內容 3, 載入非靜態內容:把.class中的所有

json字串物件的相互轉化

<script type="text/javascript"> var text='[{"id":1,"name":"zs"},{"id":2,"name":"ls"}]'; //jso

JSON字串物件之間的轉換詳解

JSON(JavaScript Object Notation) 是JavaScript程式語言的一個子集。正因JSON是JavaScript的一個子集,所以它可清晰的運用於此語言中。 eval函式 JSON文字轉換為物件 為了將JSON文字轉換為物件,可以使用eva

JAXB實現XMLjava物件以及soapXml物件需要注意的地方

public class JaxbXmlUtil { private static final String DEFAULT_ENCODING = "UTF-8"; /** * pojo轉換成xml 預設編碼UTF-8 */ public static

java整型與字元型

1、字元型轉換成整型:  1.轉換成Int型 int/Integer num  =  Integer.parseInt(String str); 2.轉換成long型 Long/long num    =  Long.parseLong(String str); 3

南瓜先生~xml字串javaBean

1.寫一個工具類: public static String convertToXml(Object obj, String encoding) { String result = null; try { JAXBContext

IP字串數字

public static long ip2Long(String ipStr){ if(ipStr == null || ipStr.length() == 0){ return 0; } int position1 = ipStr.

List、DataTable物件,ListDataTable異常Nullable解決方案

using System; using System.Collections.Generic; using System.Data; using System.Reflection; namespace ClassLibrary1 { public class D

java的二進位制int與byte以及&0xff的作用

1.      按位與&  :兩位全位1,結果才為1; 0&0=0;  0&1=0  ; 1&1=1 如:51 &5 =0011 0011 & 0000 0101=0000 0001 = 1 作用:清零、取一個數中指定位(即

extjs4json字串json物件轉換

用extjs也有一段時間了,但有些東西就是記不住,就比如json字串和json物件的轉換,我還是把它記下來。 將json字串轉為json物件 var str = '{ "name": "張三", "age": "23" }' var obj = JSON.parse(str); 將j