Map转json的类型转换问题:JacksonUtil

package com.core.util;




import java.math.BigDecimal;
import java.math.BigInteger;
import java.text.SimpleDateFormat;
import java.util.HashMap;
import java.util.Map;


import org.apache.commons.lang3.StringUtils;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion;
import org.codehaus.jackson.map.ser.BeanPropertyWriter;
import org.codehaus.jackson.type.TypeReference;




public class JacksonUtil {


private static ObjectMapper mapper = new ObjectMapper();


static {
mapper.configure(org.codehaus.jackson.map.SerializationConfig.Feature.WRITE_NULL_MAP_VALUES, false);
mapper.setSerializationInclusion(Inclusion.NON_NULL);
mapper.configure(org.codehaus.jackson.map.SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS, false);
mapper.setSerializationConfig(mapper.getSerializationConfig().withDateFormat(new SimpleDateFormat("yyyy-MM-dd HH---------------->mm---------------->ss")));
mapper.configure(org.codehaus.jackson.map.DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
}


public static <T> T toJava(String str, Class<T> clazz) {
if (StringUtils.isBlank(str)) {
return null;
}
try {
return mapper.readValue(str, clazz);
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}


@SuppressWarnings("unchecked")
public static <T> T toJava(String str, TypeReference<T> typeRef) {
if (StringUtils.isBlank(str)) {
return null;
}
try {
return (T) mapper.readValue(str, typeRef);
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}


public static String toJson(Object object) {
try {
return mapper.writeValueAsString(object);
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}


public static byte[] toBytes(Object object) {
try {
return mapper.writeValueAsBytes(object);
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}


public static <T> T objectToPojo(Object object, Class<T> clazz) {
try {
return mapper.convertValue(object, clazz);
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}


static class Test1 {


private Integer aInteger = 10000000;


public Integer getaInteger() {
return aInteger;
}


public void setaInteger(Integer aInteger) {
this.aInteger = aInteger;
}


}


static class Test2 {


private long along = 1;


public long getAlong() {
return along;
}


public void setAlong(long along) {
this.along = along;
}


}


@SuppressWarnings("unchecked")
public static void main(String[] args) {
Map<String, Object> map = new HashMap<>();
map.put("a", 1000000000);
String aString = JacksonUtil.toJson(map);
Map<String, Object> map2 = JacksonUtil.toJava(aString, Map.class);
System.out.println("1000000000---------------->"+map2.get("a").getClass());
long a = 1000000000L;
map.put("a", a);
aString = JacksonUtil.toJson(map);
map2 = JacksonUtil.toJava(aString, Map.class);
System.out.println("long a = 1000000000L---------------->"+map2.get("a").getClass());
Long b = 1000000000L;
map.put("a", b);
aString = JacksonUtil.toJson(map);
map2 = JacksonUtil.toJava(aString, Map.class);
System.out.println("Long b = 1000000000L---------------->"+map2.get("a").getClass());
Long c = 1012312121231231333L;
map.put("a", c);
aString = JacksonUtil.toJson(map);
map2 = JacksonUtil.toJava(aString, Map.class);
System.out.println("Long c = 1012312121231231333L---------------->"+map2.get("a").getClass());
float d = 1.111f;
map.put("a",d);
aString = JacksonUtil.toJson(map);
map2 = JacksonUtil.toJava(aString, Map.class);
System.out.println("float d = 1.111f---------------->"+map2.get("a").getClass());
Float dd = 1.11111111111111111111111111111111111111111111111111111111111f;
map.put("a",dd);
aString = JacksonUtil.toJson(map);
map2 = JacksonUtil.toJava(aString, Map.class);
System.out.println("Float dd = 1.11111111111111111111111111111111111111111111111111111111111f---------------->"+map2.get("a").getClass());
float ddd = 1;
map.put("a",ddd);
aString = JacksonUtil.toJson(map);
map2 = JacksonUtil.toJava(aString, Map.class);
System.out.println("float ddd = 1---------------->"+map2.get("a").getClass());
double dddd = 1;
map.put("a",dddd);
aString = JacksonUtil.toJson(map);
map2 = JacksonUtil.toJava(aString, Map.class);
System.out.println("double dddd = 1---------------->"+map2.get("a").getClass());
float ddddd = 0.1f;
map.put("a",ddddd);
aString = JacksonUtil.toJson(map);
map2 = JacksonUtil.toJava(aString, Map.class);
System.out.println("float ddddd = 0.1f---------------->"+map2.get("a").getClass());
BigDecimal aBigDecimal = new BigDecimal("1.11111111111111111111111111111111111111111111111111111111111");
map.put("a",aBigDecimal);
aString = JacksonUtil.toJson(map);
map2 = JacksonUtil.toJava(aString, Map.class);
System.out.println("new BigDecimal(\"1.11111111111111111111111111111111111111111111111111111111111\")---------------->"+map2.get("a").getClass());
BigInteger bigInteger =new BigInteger("111111111111111111111111111111111111111111111111111111111111");
map.put("a",bigInteger);
aString = JacksonUtil.toJson(map);
map2 = JacksonUtil.toJava(aString, Map.class);
System.out.println("new BigInteger(\"111111111111111111111111111111111111111111111111111111111111\")---------------->"+map2.get("a").getClass());
}
}

猜你喜欢

转载自blog.csdn.net/lin451791119/article/details/80569440