使用 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.   
  3. import com.alibaba.fastjson.JSON;  
  4. import com.alibaba.fastjson.JSONObject;  
  5. import com.alibaba.fastjson.serializer.SerializerFeature;  
  6.   
  7. public class FastJsonTest  
  8. {  
  9.   
  10.     /** 
  11.      *  java实例 转 json字符串
  12.      */  
  13.     public void toJsonString()  
  14.     {  
  15.         User user = new User("testFastJson001", "maks", 105);  
  16.         String text = JSON.toJSONString(user);  
  17.         System.out.println("toJsonString()方法:text=" + text);  
  18.         // 输出结果:text={"age":105,"id":"testFastJson001","name":"maks"}  
  19.     }  
  20.   
  21.     /** 
  22.      * json字符串 反序列化为 json对象 
  23.      */  
  24.     public void parseJsonObject()  
  25.     {  
  26.         String text = "{\"age\":105,\"id\":\"testFastJson001\",\"name\":\"maks\"}";  
  27.         JSONObject json = JSON.parseObject(text);  
  28.         System.out.println("parseJsonObject()方法:json==" + json);  
  29.         // 输出结果:json=={"age":105,"id":"testFastJson001","name":"maks"}  
  30.     }  
  31.   
  32.     /** 
  33.      * json字符串 转 java实例
  34.      */  
  35.     public void parseBeanObject()  
  36.     {  
  37.         String text = "{\"age\":105,\"id\":\"testFastJson001\",\"name\":\"maks\"}";  
  38.         User user = (User) JSON.parseObject(text, User.class);  
  39.         System.out.println("parseBeanObject()方法:user==" + user.getId() + "," + user.getName() + "," + user.getAge());  
  40.         // 输出结果:user==testFastJson001,maks,105  
  41.     }  
  42.   
  43.     /** 
  44.      * java实例 转 json对象 
  45.      */  
  46.     public void bean2Json()  
  47.     {  
  48.         User user = new User("testFastJson001", "maks", 105);  
  49.         JSONObject jsonObj = (JSONObject) JSON.toJSON(user);  
  50.         System.out.println("jsonObj==" + jsonObj);  
  51.         // 输出结果:jsonObj=={"age":105,"id":"testFastJson001","name":"maks"}  
  52.     }  
  53.   
  54.     /** 
  55.      * 全序列化 直接把java bean序列化为json文本之后,能够按照原来的类型反序列化回来。支持全序列化,需要打开SerializerFeature.WriteClassName特性 
  56.      */  
  57.     public void parseJSONAndBeanEachother()  
  58.     {  
  59.         User user = new User("testFastJson001", "maks", 105);  
  60.         SerializerFeature[] featureArr = { SerializerFeature.WriteClassName };  
  61.         String text = JSON.toJSONString(user, featureArr);  
  62.         System.out.println("parseJSONAndBeanEachother()方法:text==" + text);  
  63.         // 输出结果:text=={"@type":"fastJson.test.User","age":105,"id":"testFastJson001","name":"maks"}  
  64.         User userObj = (User) JSON.parse(text);  
  65.         System.out.println("parseJSONAndBeanEachother()方法:userObj==" + userObj.getId() + "," + userObj.getName() + "," + userObj.getAge());  
  66.         // 输出结果:userObj==testFastJson001,maks,105  
  67.     }  
  68.   
  69.     public static void main(String[] args)  
  70.     {  
  71.         FastJsonTest test = new FastJsonTest();  
  72.         // 序列化  
  73.         test.toJsonString();  
  74.         // 反序列化为json对象  
  75.         test.parseJsonObject();  
  76.         // 反序列化为javaBean对象  
  77.         test.parseBeanObject();  
  78.         // 将javaBean转化为json对象  
  79.         test.bean2Json();  
  80.         // 全序列化  
  81.         test.parseJSONAndBeanEachother();  
  82.     }  
  83. }  

             控制台输出结果:

  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   

           附:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值