zoukankan      html  css  js  c++  java
  • fastJson工具类

    参考: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);
            });
        }
    }
  • 相关阅读:
    绝对布局absoluteLayout
    表格布局tabelLayout
    DP问题如何确定状态
    秒杀多线程第四篇 一个经典的多线程同步问题
    循环队列
    【Unity3d】【项目学习心得】从资源server下载资源(一)
    矩阵经典题目六:poj 3070 Fibonacci
    Mean Shift具体介绍
    Android ViewPager使用具体解释
    Android中ExpandableListView控件基本使用
  • 原文地址:https://www.cnblogs.com/yaoyuan2/p/10932230.html
Copyright © 2011-2022 走看看