Java对象与JSON字符串互转工具类

文章介绍了JacksonUtil类,它提供Java对象到JSON字符串的转换(writeValueAsString方法)以及JSON字符串到Java对象的转换(readValue方法),支持单对象、泛型对象列表和参数化的转换。
摘要由CSDN通过智能技术生成
public class JacksonUtil {
   private static Logger logger = LoggerFactory.getLogger(JacksonUtil.class);

    private final static ObjectMapper objectMapper = new ObjectMapper();
    public static ObjectMapper getInstance() {
        return objectMapper;
    }

    /**
     * bean、array、List、Map --> json
     * java对象转为json字符串
     * @param obj
     * @return json string
     * @throws Exception
     */
    public static String writeValueAsString(Object obj) {
       try {
         return getInstance().writeValueAsString(obj);
      } catch (JsonGenerationException e) {
         logger.error(e.getMessage(), e);
      } catch (JsonMappingException e) {
         logger.error(e.getMessage(), e);
      } catch (IOException e) {
         logger.error(e.getMessage(), e);
      }
        return null;
    }


测试用例:
// 创建一个Java对象
User user = new User("Alice", 25);
// 将对象转换为JSON字符串
String json = JacksonUtil.writeValueAsString(user);
// 验证JSON字符串是否符合预期
String expectedJson = "{\"name\":\"Alice\",\"age\":25}"; Assert.assertEquals(expectedJson, json); 

    /**
     * string --> bean、Map、List(array)
     * json字符串转为java对象
     * @param jsonStr
     * @param clazz
     * @return obj
     * @throws Exception
     */
    public static <T> T readValue(String jsonStr, Class<T> clazz) {
       try {
         return getInstance().readValue(jsonStr, clazz);
      } catch (JsonParseException e) {
         logger.error(e.getMessage(), e);
      } catch (JsonMappingException e) {
         logger.error(e.getMessage(), e);
      } catch (IOException e) {
         logger.error(e.getMessage(), e);
      }
       return null;
    }

测试用例:

// 定义一个JSON字符串 
String json = "{\"name\":\"Alice\",\"age\":25}"; 
// 将JSON字符串转换为User对象 
User user = JacksonUtil.readValue(json, User.class); 

   /**
    * string --> List<Bean>...
    *json字符串转为List<Bean>对象
    * @param jsonStr
    * @param parametrized
    * @param parameterClasses
    * @param <T>
    * @return
    */
   public static <T> T readValue(String jsonStr, Class<?> parametrized, Class<?>... parameterClasses) {
      try {
         JavaType javaType = getInstance().getTypeFactory().constructParametricType(parametrized, parameterClasses);
         return getInstance().readValue(jsonStr, javaType);
      } catch (JsonParseException e) {
         logger.error(e.getMessage(), e);
      } catch (JsonMappingException e) {
         logger.error(e.getMessage(), e);
      } catch (IOException e) {
         logger.error(e.getMessage(), e);
      }
      return null;
   }
}

测试用例:

// 定义一个 JSON 字符串

String json = "[{\"name\":\"Alice\",\"age\":25},{\"name\":\"Bob\",\"age\":30}]";

// 将 JSON 字符串转换为 List<User> 对象

List<User> userList = JacksonUtil.readValue(json, List.class, User.class);

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值