使用Jackson来进行对象与json的转化

没什么技巧,Jackson已经给出了完美的用法,自己再简单包装下就行了,也很简单,我就不废话了!

第一步:引入依赖jar包,必须的

<!-- Jackson Json处理工具包 -->
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-databind</artifactId>
			<version>2.4.2</version>
</dependency>

第二步:开撸,自己再简单包装后的4中使用方法

 // 定义jackson对象
    private static final ObjectMapper MAPPER = new ObjectMapper();
  



 /**
     * 将对象转化为json对象(可以是多个对象即集合)
     * 因为最后都会把转化为字符串
     * @param data
     * @return
     */
    public static String objectToJson(Object data) {
    	try {
			String string = MAPPER.writeValueAsString(data);
			return string;
		} catch (JsonProcessingException e) {
			e.printStackTrace();
		}
    	return null;
    }
    
    /**
     * 将json转化为单个对象
     * @param jsonData
     * @param beanType
     * @return
     */
    public static <T> T jsonToPojo(String jsonData, Class<T> beanType) {
        try {
            T t = MAPPER.readValue(jsonData, beanType);
            return t;
        } catch (Exception e) {
        	e.printStackTrace();
        }
        return null;
    }
    
    /**
     * 将json转化为list集合
     * @param jsonData
     * @param beanType
     * @return
     */
    public static <T> List<T> jsonToList(String jsonData, Class<T> beanType) {
    	JavaType javaType = MAPPER.getTypeFactory().constructParametricType(List.class, beanType);
    	try {
    		List<T> list = MAPPER.readValue(jsonData, javaType);
    		return list;
		} catch (Exception e) {
			e.printStackTrace();
		}
    	
    	return null;
    }

/**
     * json 转化为 map
     * @param json
     * @param kClass
     * @param vClass
     * @param <K>
     * @param <V>
     * @return
     */
public static <K, V> Map<K, V> parseMap(String json, Class<K> kClass, Class<V> vClass) {
        try {
            return MAPPER.readValue(json, mapper.getTypeFactory().constructMapType(Map.class, kClass, vClass));
        } catch (IOException e) {
            logger.error("json解析出错:" + json, e);
            return null;
        }
    }

第三 步:测试

/**
     * 测试方法
     */
    @Test
    public void fun() {
    	Student stu = new Student("zhansan","123456","男");
    	Student stu2 = new Student("lisi","123456","女");
    	
    	List<Student> list = new ArrayList<Student>();
    	list.add(stu);
    	list.add(stu2);
    	
    	//测试单个对象转化为json对象
    	System.out.println("-----------对象转化为json对象---------------");
    	String jsonData1 = MyJackson.objectToJson(stu);
    	System.out.println(jsonData1);
    	
    	//测试多个对象转化为json对象
    	System.out.println("-----------多个对象转化为json对象---------------");
    	String jsonData2 = MyJackson.objectToJson(list);
    	System.out.println(jsonData2);
    	
    	
    	
    	//测试 将json转化为单个对象
    	System.out.println("-----------json转化为单个对象--------------");
    	String jsonData3 = "{\"name\":\"zhansan\",\"password\":\"123456\",\"sex\":\"男\"}";
    	Student pojo = MyJackson.jsonToPojo(jsonData3, Student.class);
    	System.out.println(pojo.toString());
    	
    	
    	//测试 将json转化为list
    	System.out.println("-----------将json转化为list--------------");
    	String jsonData4 = "[{\"name\":\"zhansan\",\"password\":\"123456\",\"sex\":\"男\"},{\"name\":\"lisi\",\"password\":\"123456\",\"sex\":\"女\"}]";
    	List<Student> list2 = MyJackson.jsonToList(jsonData4, Student.class);
    	System.out.println(list.toString());
    }

第四步:结果

-----------对象转化为json对象---------------
{"name":"zhansan","password":"123456","sex":"男"}


-----------多个对象转化为json对象---------------
[{"name":"zhansan","password":"123456","sex":"男"},{"name":"lisi","password":"123456","sex":"女"}]


-----------json转化为单个对象--------------
Student [name=zhansan, password=123456, sex=男]


-----------将json转化为list--------------
[Student [name=zhansan, password=123456, sex=男], Student [name=lisi, password=123456, sex=女]]

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值