JackSon 数据之间的转换 java

[html]  view plain copy
  1. <strong><span style="font-size:18px;">json 与对象 list map 数组之间的转换</span></strong>  
[html]  view plain copy
  1.   
[html]  view plain copy
  1. JackSon的工具类  
[html]  view plain copy
  1. package JsonUtil;  
  2.   
  3. import java.io.IOException;  
  4. import java.util.Collection;  
  5. import java.util.Map;  
  6.   
  7. import org.codehaus.jackson.map.ObjectMapper;  
  8. import org.codehaus.jackson.type.JavaType;  
  9.   
  10. @SuppressWarnings("all")  
  11. public class JackSonUtil {  
  12.     protected static final ObjectMapper mapper = new ObjectMapper();  
  13.   
  14.     /**  
  15.      * 如果JSON字符串为Null或"null"字符串,返回Null. 如果JSON字符串为"[]",返回空集合.  
  16.      *   
  17.      *  
  18.      */  
  19.     public static <T> T fromJson(String jsonString, Class<T> clazz) {  
  20.         if (jsonString == null || jsonString.length() == 0) {  
  21.             return null;  
  22.         }  
  23.   
  24.         try {  
  25.             return mapper.readValue(jsonString, clazz);  
  26.         } catch (IOException e) {  
  27.             return null;  
  28.         }  
  29.     }  
  30.   
  31.     /**  
  32.      * 如果对象为Null,返回"null". 如果集合为空集合,返回"[]".  
  33.      */  
  34.     public static String toJson(Object object) {  
  35.         try {  
  36.             return mapper.writeValueAsString(object);  
  37.         } catch (IOException e) {  
  38.             return null;  
  39.         }  
  40.     }  
  41.   
  42.     /**  
  43.      * @param jsonStr  
  44.      * @param type  
  45.      * @return json数据转换成map  
  46.      */  
  47.     public static Map<??> fromJsonToMap(String jsonStr, JavaType type) {  
  48.         if (jsonStr == null || jsonStr.length() == 0) {  
  49.             return null;  
  50.         }  
  51.         try {  
  52.             return mapper.readValue(jsonStr, type);  
  53.         } catch (IOException e) {  
  54.             return null;  
  55.         }  
  56.     }  
  57.   
  58.     /**  
  59.      * @param jsonStr  
  60.      * @param type  
  61.      * @return json数据转换成list  
  62.      */  
  63.     public static <T extends Collection> T fromJsonToCollection(String jsonStr, JavaType type) {  
  64.         if (jsonStr == null || jsonStr.length() == 0) {  
  65.             return null;  
  66.         }  
  67.         try {  
  68.             return (T) mapper.readValue(jsonStr, type);  
  69.         } catch (IOException e) {  
  70.             return null;  
  71.         }  
  72.     }  
  73.   
  74.     /**  
  75.      * @param jsonStr  
  76.      * @param elementClasses  
  77.      * @return json数据转换成数组  
  78.      */  
  79.     public static <T extends Object> T[] fromJsonToArray(String jsonStr, Class<?> elementClasses) {  
  80.         if (jsonStr == null || jsonStr.length() == 0) {  
  81.             return null;  
  82.         }  
  83.         try {  
  84.             return (T[]) mapper.readValue(jsonStr, elementClasses);  
  85.         } catch (IOException e) {  
  86.             return null;  
  87.         }  
  88.     }  
  89.   
  90.     /**  
  91.      * 获取泛型的Collection Type  
  92.      *   
  93.      * @param collectionClass  
  94.      *            泛型的Collection  
  95.      * @param elementClasses  
  96.      *            元素类  
  97.      * @return JavaType Java类型  
  98.      * @since 1.0  
  99.      */  
  100.     public static JavaType getCollectionType(Class<?> collectionClass, Class<?>... elementClasses) {  
  101.         return mapper.getTypeFactory().constructParametricType(collectionClass, elementClasses);  
  102.     }  
  103.   
  104. }  

JackSon 工具类的使用
[html]  view plain copy
  1. package MainTest;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.HashMap;  
  5. import java.util.List;  
  6. import java.util.Map;  
  7.   
  8. import org.codehaus.jackson.type.JavaType;  
  9.   
  10. import JsonUtil.JackSonUtil;  
  11. import models.Person;  
  12.   
  13. public class JsonTest {  
  14.   
  15.     public static void main(String[] args) {  
  16.         Person person = new Person("Lucy", 20, "男", "中国");  
  17.         Person person1 = new Person("Lucy1", 20, "男", "中国");  
  18.         Person person2 = new Person("Lucy2", 20, "男", "中国");  
  19.         Person person3 = new Person("Lucy3", 20, "男", "中国");  
  20.         System.err.println("一个对象转换成Json字符");  
  21.         System.err.println(JackSonUtil.toJson(person));  
  22.         List<Object> list = new ArrayList<Object>();  
  23.         list.add(person);  
  24.         list.add(person1);  
  25.         list.add(person2);  
  26.         list.add(person3);  
  27.         String jsonStr = JackSonUtil.toJson(list);  
  28.         System.err.println(" List集合转换成json方法");  
  29.         System.err.println(jsonStr);  
  30.         System.err.println("Json字符转换成List对象");  
  31.         JavaType javaType = JackSonUtil.getCollectionType(ArrayList.class, Person.class);  
  32.         List<Person> persons = JackSonUtil.fromJsonToCollection(jsonStr, javaType);  
  33.         for (Person p : persons) {  
  34.             System.err.print(JackSonUtil.toJson(person) + "     ");  
  35.         }  
  36.   
  37.         System.err.println("Map集合转换成json方法");  
  38.         Map<String, Object> map = new HashMap<String, Object>();  
  39.         map.put("学生", person);  
  40.         map.put("学生1", person1);  
  41.         map.put("学生2", person2);  
  42.         map.put("学生3", person3);  
  43.   
  44.         String mapJsonStr = JackSonUtil.toJson(map);  
  45.         System.err.println(mapJsonStr);  
  46.         System.err.println("Json字符转换成Map对象");  
  47.         JavaType javaType1 = JackSonUtil.getCollectionType(Map.class, String.class, Person.class);  
  48.         Map<String, Person> personMap = (Map<String, Person>) JackSonUtil.fromJsonToMap(mapJsonStr, javaType1);  
  49.         System.err.println(personMap);  
  50.         for (Object key : personMap.keySet()) {  
  51.             System.err.print("key=" + key + " value=" + JackSonUtil.toJson(personMap.get(key)));  
  52.             System.err.println();  
  53.         }  
  54.   
  55.         System.err.println("数组与JSON之间的转换");  
  56.   
  57.         Person[] personArray = { person, person1, person2, person3 };  
  58.         String arrayStr = JackSonUtil.toJson(personArray);  
  59.         System.err.println(arrayStr);  
  60.         Person[] personArray1 = (Person[]) JackSonUtil.fromJsonToArray(arrayStr, Person[].class);  
  61.         for (Person p : personArray1) {  
  62.             System.err.println(JackSonUtil.toJson(p));  
  63.         }  
  64.     }  
  65.   
  66. }  
打印的结果


一个对象转换成Json字符
{"name":"Lucy","age":20,"sex":"男","address":"中国"}
 List集合转换成json方法
[{"name":"Lucy","age":20,"sex":"男","address":"中国"},{"name":"Lucy1","age":20,"sex":"男","address":"中国"},{"name":"Lucy2","age":20,"sex":"男","address":"中国"},{"name":"Lucy3","age":20,"sex":"男","address":"中国"}]
Json字符转换成List对象
{"name":"Lucy","age":20,"sex":"男","address":"中国"}     {"name":"Lucy","age":20,"sex":"男","address":"中国"}     {"name":"Lucy","age":20,"sex":"男","address":"中国"}     {"name":"Lucy","age":20,"sex":"男","address":"中国"}     Map集合转换成json方法
{"学生":{"name":"Lucy","age":20,"sex":"男","address":"中国"},"学生2":{"name":"Lucy2","age":20,"sex":"男","address":"中国"},"学生1":{"name":"Lucy1","age":20,"sex":"男","address":"中国"},"学生3":{"name":"Lucy3","age":20,"sex":"男","address":"中国"}}
Json字符转换成Map对象
{学生=models.Person@2d6e8792, 学生2=models.Person@2812cbfa, 学生1=models.Person@2acf57e3, 学生3=models.Person@506e6d5e}
key=学生 value={"name":"Lucy","age":20,"sex":"男","address":"中国"}
key=学生2 value={"name":"Lucy2","age":20,"sex":"男","address":"中国"}
key=学生1 value={"name":"Lucy1","age":20,"sex":"男","address":"中国"}
key=学生3 value={"name":"Lucy3","age":20,"sex":"男","address":"中国"}
数组与JSON之间的转换
[{"name":"Lucy","age":20,"sex":"男","address":"中国"},{"name":"Lucy1","age":20,"sex":"男","address":"中国"},{"name":"Lucy2","age":20,"sex":"男","address":"中国"},{"name":"Lucy3","age":20,"sex":"男","address":"中国"}]
{"name":"Lucy","age":20,"sex":"男","address":"中国"}
{"name":"Lucy1","age":20,"sex":"男","address":"中国"}
{"name":"Lucy2","age":20,"sex":"男","address":"中国"}
{"name":"Lucy3","age":20,"sex":"男","address":"中国"}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值