Jackson反序列化的实现方法

jackson反序列化主要有两种情况,一种是单对象反序列化,另一种是多对象、复杂对象(集合等)反序列化,具体如下:

一、单对象序列化

LatConfig latConfigObject = JacksonUtil.readValue(latConfig, LatConfig.class);


二、多对象、复杂对象(集合等)

List enumConfigs = JacksonUtil.readValue(enumConfig, new TypeReference>(){});

 上面的 
  latConfig,和emumConfig 是对应对象的json字符串 
  

这里调用的readValue方法是对Jackson方法进行封装过后工具类里面的方法,工具类代码如下:

package com.lcma.zhbs.common.util;

import org.apache.log4j.Logger;

import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
  
/**
 * 

Title : 工具类

*

Description: json字符与对像转换

*

Copyright : Copyright (c) 2016

*

Company : company

* @author : lcma * @version : 1.0 */ public final class JacksonUtil { private JacksonUtil(){ } /** * log 记录日志 */ private static final Logger LOGGER = Logger.getLogger(JacksonUtil.class); /** * ObjectMapper 对象转换器 */ public static ObjectMapper objectMapper; /** * 使用泛型方法,把json字符串转换为相应的JavaBean对象。 * (1)转换为普通JavaBean:readValue(json,Student.class) * (2)转换为List,如List,将第二个参数传递为Student * [].class.然后使用Arrays.asList();方法把得到的数组转换为特定类型的List * * @param jsonStr * @param valueType * @return */ public static T readValue(String jsonStr, Class valueType) { if (objectMapper == null) { objectMapper = new ObjectMapper(); } try { return objectMapper.readValue(jsonStr, valueType); } catch (Exception e) { LOGGER.error(e); } return null; } /** * json数组转List * @param jsonStr * @param valueTypeRef * @return */ public static T readValue(String jsonStr, TypeReference valueTypeRef){ if (objectMapper == null) { objectMapper = new ObjectMapper(); } try { return objectMapper.readValue(jsonStr, valueTypeRef); } catch (Exception e) { LOGGER.error(e); } return null; } /** * 把JavaBean转换为json字符串 * * @param object * @return */ public static String toJSon(Object object) { if (objectMapper == null) { objectMapper = new ObjectMapper(); } try { return objectMapper.writeValueAsString(object); } catch (Exception e) { LOGGER.error(e); } return null; } }


你可能感兴趣的:(Java)