/* * Copyright Notice: * Copyright 1998-2008, Huawei Technologies Co., Ltd. ALL Rights Reserved. * * Warning: This computer software sourcecode is protected by copyright law * and international treaties. Unauthorized reproduction or distribution * of this sourcecode, or any portion of it, may result in severe civil and * criminal penalties, and will be prosecuted to the maximum extent * possible under the law. */ package com.casic.missiles.util; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; import com.fasterxml.jackson.databind.node.ObjectNode; import java.io.IOException; public class JsonUtil { private static ObjectMapper objectMapper; static { objectMapper = new ObjectMapper(); // 设置FAIL_ON_EMPTY_BEANS属性,当序列化空对象不要抛异常 objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); // 设置FAIL_ON_UNKNOWN_PROPERTIES属性,当JSON字符串中存在Java对象没有的属性,忽略 objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); } /** * Convert Object to JsonString * * @param jsonObj * @return */ public static String jsonObj2Sting(Object jsonObj) { String jsonString = null; try { jsonString = objectMapper.writeValueAsString(jsonObj); } catch (IOException e) { System.out.printf("pasre json Object[{}] to string failed.",jsonString); } return jsonString; } /** * Convert JsonString to Simple Object * * @param jsonString * @param cls * @return */ public static <T> T jsonString2SimpleObj(String jsonString, Class<T> cls) { T jsonObj = null; try { jsonObj = objectMapper.readValue(jsonString, cls); } catch (IOException e) { System.out.printf("pasre json Object[{}] to string failed.",jsonString); } return jsonObj; } /** * Method that will convert object to the ObjectNode. * * the source data; if null, will return null. * @return the ObjectNode data after converted. */ public static <T> ObjectNode convertObject2ObjectNode(T object) throws Exception { if (null == object) { return null; } ObjectNode objectNode = null; if (object instanceof String) { objectNode = convertJsonStringToObject((String) object, ObjectNode.class); } else { objectNode = convertValue(object, ObjectNode.class); } return objectNode; } /** * Method that will convert the json string to destination by the type(cls). * * @param jsonString * the source json string; if null, will return null. * @param cls * the destination data type. * @return */ public static <T> T convertJsonStringToObject(String jsonString, Class<T> cls) throws Exception { if (null == jsonString || jsonString.equalsIgnoreCase("") == true) { return null; } try { T object = objectMapper.readValue(jsonString, cls); return object; } catch (Exception e) { throw new Exception(e); } } /** * Method that will convert from given value into instance of given value * type. * * @param fromValue * @param toValueType * @return */ private static <T> T convertValue(Object fromValue, Class<T> toValueType) throws Exception { try { return objectMapper.convertValue(fromValue, toValueType); } catch (IllegalArgumentException e) { throw new Exception(e); } } }