参考:https://blog.csdn.net/u010246789/article/details/52539576
功能:
- json<-->obj
- json<-->map
- map<-->obj
- json---->array(array->json,可使用obj->json)
- json---->list(list->json,可使用obj->json)
代码:
FastJsonUtils.java
package com.ebc.json; import java.util.List; import java.util.Map; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.serializer.JSONLibDataFormatSerializer; import com.alibaba.fastjson.serializer.SerializeConfig; import com.alibaba.fastjson.serializer.SerializerFeature; /** * fastjson工具类 * @date 2019-5-27 */ public class FastJsonUtils { private static final SerializeConfig config; static { config = new SerializeConfig(); // 使用和json-lib兼容的日期输出格式 config.put(java.util.Date.class, new JSONLibDataFormatSerializer()); // 使用和json-lib兼容的日期输出格式 config.put(java.sql.Date.class, new JSONLibDataFormatSerializer()); } private static final SerializerFeature[] features = { // 输出空置字段 SerializerFeature.WriteMapNullValue, // list字段如果为null,输出为[],而不是null SerializerFeature.WriteNullListAsEmpty, // 数值字段如果为null,输出为0,而不是null SerializerFeature.WriteNullNumberAsZero, // Boolean字段如果为null,输出为false,而不是null SerializerFeature.WriteNullBooleanAsFalse, // 字符类型字段如果为null,输出为"",而不是null SerializerFeature.WriteNullStringAsEmpty }; public static String obj2json(Object object) { return JSON.toJSONString(object, config); } public static String obj2json2(Object object) { return JSON.toJSONString(object, config, features); } public static <T> T json2obj(String text, Class<T> clazz) { return JSON.parseObject(text, clazz); } public static <T> Object[] json2array(String text, Class<T> clazz) { return JSON.parseArray(text, clazz).toArray(); } public static <T> List<T> json2list(String text, Class<T> clazz) { return JSON.parseArray(text, clazz); } public static <K, V> Map<K, V> json2map(String s) { Map<K, V> m = (Map<K, V>) JSONObject.parseObject(s); return m; } public static <K, V> String map2json(Map<K, V> m) { String s = JSONObject.toJSONString(m); return s; } public static <K,V,T> T map2obj(Map<K, V> m, Class<T> clazz) { return json2obj(map2json(m),clazz); } public static <K, V> Map<K, V> obj2map(Object object) { return json2map(obj2json(object)); } }
Water.java
package json; import com.alibaba.fastjson.annotation.JSONField; import com.alibaba.fastjson.annotation.JSONType; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; import lombok.ToString; import java.io.Serializable; import java.util.Date; /** * @author yaoyuan2 * @date 2019/5/25 */ @Setter @Getter @NoArgsConstructor @ToString @JSONType(typeName = "com.ebc.entity.Water") public class Water implements Serializable { private String id; private String merchno; private String transcode; private Double amount; @JSONField(name = "trans_time",format = "yyyy-MM-dd HH:mm:ss") private String transTime; @JSONField(name = "create_time") private Date createTime; private String status; }
JsonTest.java
package json; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Console; import cn.hutool.core.util.IdUtil; import com.ebc.json.FastJsonUtils; import org.junit.Test; import java.util.Date; import java.util.List; import java.util.Map; /** * @author yaoyuan2 * @date 2019/5/27 */ public class JsonTest { @Test public void obj2json() { Water water = new Water(); water.setId(IdUtil.objectId()); water.setAmount(123.45); water.setMerchno("100000000000001"); water.setStatus("00"); water.setTranscode("84"); water.setCreateTime(DateUtil.date()); water.setTransTime(DateUtil.format(new Date(),"yyyy-MM-dd HH:mm:ss")); String json = FastJsonUtils.obj2json(water); Console.log(json); } @Test public void obj2json2() { Water water = new Water(); water.setId(IdUtil.objectId()); water.setAmount(123.45); water.setMerchno("100000000000001"); //water.setStatus("00"); water.setTranscode("84"); water.setCreateTime(DateUtil.date()); water.setTransTime(DateUtil.format(new Date(),"yyyy-MM-dd HH:mm:ss")); String json = FastJsonUtils.obj2json2(water); Console.log(json); } @Test public void json2obj() { String json = "{"amount":123.45,"create_time":1558947042583,"id":"5ceba4e24cbdfa60c44677d8","merchno":"100000000000001","status":"","trans_time":"2019-05-27 16:50:42","transcode":"84"}"; Water water = FastJsonUtils.json2obj(json,Water.class); Console.log(water); } @Test public void json2array() { Water [] waters = new Water[1]; Water water = new Water(); water.setId(IdUtil.objectId()); water.setAmount(123.45); water.setMerchno("100000000000001"); //water.setStatus("00"); water.setTranscode("84"); water.setCreateTime(DateUtil.date()); water.setTransTime(DateUtil.format(new Date(),"yyyy-MM-dd HH:mm:ss")); waters[0] = water; String json = FastJsonUtils.obj2json(waters); Console.log(json); //转数组后,返回的必须是Object[],不能强转。可在for循环里转 Object [] ws = FastJsonUtils.json2array(json,Water.class); for (int i = 0; i < ws.length; i++) { Water w = (Water)ws[i]; Console.log(w); } } @Test public void json2list() { List<Water> waters = CollUtil.newArrayList(); Water water = new Water(); water.setId(IdUtil.objectId()); water.setAmount(123.45); water.setMerchno("100000000000001"); //water.setStatus("00"); water.setTranscode("84"); water.setCreateTime(DateUtil.date()); water.setTransTime(DateUtil.format(new Date(),"yyyy-MM-dd HH:mm:ss")); waters.add(water); String json = FastJsonUtils.obj2json(waters); Console.log(json); //可强转 List<Water> ws = FastJsonUtils.json2list(json,Water.class); for (int i = 0; i < ws.size(); i++) { Water w = ws.get(i); Console.log(w); } } @Test public void json2map() { String json = "{"amount":123.45,"create_time":1558947042583,"id":"5ceba4e24cbdfa60c44677d8","merchno":"100000000000001","status":"","trans_time":"2019-05-27 16:50:42","transcode":"84"}"; Map<String,Object> map = FastJsonUtils.json2map(json); map.forEach((k,v)->{ Console.log(k+"="+v); }); } @Test public void map2json() { String json = "{"amount":123.45,"create_time":1558947042583,"id":"5ceba4e24cbdfa60c44677d8","merchno":"100000000000001","status":"","trans_time":"2019-05-27 16:50:42","transcode":"84"}"; Map<String,Object> map = FastJsonUtils.json2map(json); map.forEach((k,v)->{ Console.log(k+"="+v); }); String json2 = FastJsonUtils.map2json(map); Console.log(json2); } @Test public void map2obj() { String json = "{"amount":123.45,"create_time":1558947042583,"id":"5ceba4e24cbdfa60c44677d8","merchno":"100000000000001","status":"","trans_time":"2019-05-27 16:50:42","transcode":"84"}"; Map<String,Object> map = FastJsonUtils.json2map(json); Water w = FastJsonUtils.map2obj(map,Water.class); Console.log(w); } @Test public void obj2map() { Water water = new Water(); water.setId(IdUtil.objectId()); water.setAmount(123.45); water.setMerchno("100000000000001"); //water.setStatus("00"); water.setTranscode("84"); water.setCreateTime(DateUtil.date()); water.setTransTime(DateUtil.format(new Date(),"yyyy-MM-dd HH:mm:ss")); Map<String,Object> map = FastJsonUtils.obj2map(water); map.forEach((k,v)->{ Console.log(k+"="+v); }); } }