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);
        });
    }
}
原文地址:https://www.cnblogs.com/yaoyuan2/p/10932230.html