fastJson 一些小例子

package com.*;

import com.alibaba.fastjson.annotation.JSONField;

public class VO {

    @JSONField(name="ID")
    private int id;


    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    @Override
    public String toString() {
        return "VO{" +
                "id=" + id +
                '}';
    }
}
package com.*;

import com.alibaba.fastjson.annotation.JSONField;

public class VO {

    @JSONField(name="ID")
    private int id;


    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    @Override
    public String toString() {
        return "VO{" +
                "id=" + id +
                '}';
    }
}

测试类:

package com.*;

import ch.qos.logback.core.net.SyslogOutputStream;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.parser.deserializer.ExtraProcessor;
import com.alibaba.fastjson.serializer.PropertyFilter;
import com.paic.gamma.apply.common.KeyGenerator;
import lombok.ToString;
import org.apache.commons.lang3.time.FastDateFormat;

import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ThreadLocalRandom;
import java.util.stream.Collectors;

public class TestString {

    public static void main(String[] strs){

        System.out.println("uuid:" +  KeyGenerator.uuid());

        String date = FastDateFormat.getInstance("yyyy-MM-dd HH:mm:ss").format(new Date());
        System.out.println(date);

        System.out.println("数字:"+ThreadLocalRandom.current().nextInt(10));

        int[] in = new int[]{11,22,33};

        List<String> list = Arrays.asList("aa","bb","cc");

        Map<String,String> map =list.stream().filter(s-> s.equals("aa")).collect(Collectors.toMap(String::toString,String::toString));
        System.out.println("list:" + list);
        System.out.println("map:" + map);

        testFastJson();
        testParseFastJson();
        serializeFilterFastJson();
        unserializeJsonToObject();
        testParseFastJson2();
    }




    public static void testFastJson(){

        VO vo = new VO();
        vo.setId(11);

        String str = JSON.toJSONString(vo);
        System.out.println(str);

    }

    /**
     * 反序列化,但是添加了反序列化的过滤
     */
    public static void testParseFastJson(){

        ExtraProcessor processor = new ExtraProcessor() {
            public void processExtra(Object object, String key, Object value) {
                VO2 vo = (VO2) object;
                vo.getAttributes().put(key, value);
            }
        };

        VO2 vo = JSON.parseObject("{\"id\":123,\"name\":\"abc\"}", VO2.class, processor);
        System.out.println("VO2:"+ vo);

    }

    /**
     * 反序列化,但是添加了反序列化的过滤
     */
    public static void testParseFastJson2(){

        ExtraProcessor processor = new MyExtraProcessor();

        // value本应该是字符串类型的,通过getExtraType的处理变成Integer类型了。
        VO2 vo = JSON.parseObject("{\"id\":123,\"value\":\"123456\"}", VO2.class, processor);

        System.out.println("vo:" + vo);

    }


    /**
     * 序列发字符串,添加了过滤条件
     */
    public static void serializeFilterFastJson(){
        PropertyFilter filter = new PropertyFilter() {

            public boolean apply(Object source, String name, Object value) {
                if ("ID".equals(name)) {
                    int id = ((Integer) value).intValue();
                    return id >= 100;
                }
                return false;
            }
        };

        VO vo = new VO();
        vo.setId(111);
        String jsonStr = JSON.toJSONString(vo, filter); // 序列化的时候传入filter

        System.out.println("jsonStr:"+jsonStr);

    }


    /**
     * 反序列化
     */
    public static void unserializeJsonToObject(){

        String jsonStr = "{\"id\":99}";
        System.out.println("jsonStr:" + jsonStr);

        VO vo = JSON.parseObject(jsonStr,VO.class);

        System.out.println("vo:" + vo);


    }

}

 

 

 

package com.*;

import java.util.*;

public class Foo {

    private String vString = "vStringhehhehe";
    private char vchar = 'x';

    private byte vbyte = 64;
    private short vshort = 128;
    private int vint = 65535;
    private long vlong = 9999999L;

    private float vfloat = 12.1f;
    private double vdouble = 22.203d;

    private boolean vboolean = false;

    //	private Date vdate = new Date();
    private Date dddd = new Date();
    private Date vDate = new Date();
    private Date v_Date = new Date();
    private Object vnull = null;

    private String[] avString = {"aaa", "bbb", "ccc"};
    private int[] avint = {1, 2, 3, 4};
    private boolean[] avboolean = {true, false, true, true};

    private List<String> listString = new ArrayList<String>();
    private Map<String, String> map = new HashMap<String, String>();

    private Bar bar = new Bar();
    private Bar[] avBar = {new Bar(), new Bar()};
    private List<Bar> listBar = new ArrayList<Bar>();

    {
        listString.add("listString1");
        listString.add("listString2");
        listString.add("listString3");

        map.put("x", "s11111x");
        map.put("y", "s22222y");
        map.put("z", "s33333z");

        listBar.add(new Bar());
        listBar.add(new Bar());
        listBar.add(new Bar());
    }



    public String getvString() {
        return vString;
    }

    public void setvString(String vString) {
        this.vString = vString;
    }

    public char getVchar() {
        return vchar;
    }

    public void setVchar(char vchar) {
        this.vchar = vchar;
    }

    public byte getVbyte() {
        return vbyte;
    }

    public void setVbyte(byte vbyte) {
        this.vbyte = vbyte;
    }

    public short getVshort() {
        return vshort;
    }

    public void setVshort(short vshort) {
        this.vshort = vshort;
    }

    public int getVint() {
        return vint;
    }

    public void setVint(int vint) {
        this.vint = vint;
    }

    public long getVlong() {
        return vlong;
    }

    public void setVlong(long vlong) {
        this.vlong = vlong;
    }

    public float getVfloat() {
        return vfloat;
    }

    public void setVfloat(float vfloat) {
        this.vfloat = vfloat;
    }

    public double getVdouble() {
        return vdouble;
    }

    public void setVdouble(double vdouble) {
        this.vdouble = vdouble;
    }

    public boolean isVboolean() {
        return vboolean;
    }

    public void setVboolean(boolean vboolean) {
        this.vboolean = vboolean;
    }

    public Date getDddd() {
        return dddd;
    }

    public void setDddd(Date dddd) {
        this.dddd = dddd;
    }

    public Date getV_Date() {
        return v_Date;
    }

    public void setV_Date(Date v_Date) {
        this.v_Date = v_Date;
    }

    public Date getvDate() {
        return vDate;
    }

    public void setvDate(Date vDate) {
        this.vDate = vDate;
    }

    public Object getVnull() {
        return vnull;
    }

    public void setVnull(Object vnull) {
        this.vnull = vnull;
    }

    public String[] getAvString() {
        return avString;
    }

    public void setAvString(String[] avString) {
        this.avString = avString;
    }

    public int[] getAvint() {
        return avint;
    }

    public void setAvint(int[] avint) {
        this.avint = avint;
    }

    public boolean[] getAvboolean() {
        return avboolean;
    }

    public void setAvboolean(boolean[] avboolean) {
        this.avboolean = avboolean;
    }

    public List<String> getListString() {
        return listString;
    }

    public void setListString(List<String> listString) {
        this.listString = listString;
    }

    public Map<String, String> getMap() {
        return map;
    }

    public void setMap(Map<String, String> map) {
        this.map = map;
    }

    public Bar getBar() {
        return bar;
    }

    public void setBar(Bar bar) {
        this.bar = bar;
    }

    public Bar[] getAvBar() {
        return avBar;
    }

    public void setAvBar(Bar[] avBar) {
        this.avBar = avBar;
    }

    public List<Bar> getListBar() {
        return listBar;
    }

    public void setListBar(List<Bar> listBar) {
        this.listBar = listBar;
    }
}

 

package com.*;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializeConfig;
import com.alibaba.fastjson.serializer.SimpleDateFormatSerializer;

import java.util.Date;
import java.util.Random;

public class Bar {

    public static SerializeConfig mapping = new SerializeConfig();
    private String barName;
    private int barAge;
    private Date barDate = new Date();
    static {
        mapping.put(Date.class, new SimpleDateFormatSerializer("yyyy-MM-dd"));
    }
    {
        Random r = new Random();
        barName = "sss_"+String.valueOf(r.nextFloat());
        barAge = r.nextInt();
    }

    public static void main(String[] args) {
        Object obj = JSON.toJSON(new Bar());
        String x1 = JSON.toJSONString(new Bar(), true);
        System.out.println(x1);
        String x2 = JSON.toJSONString(new Bar(), mapping);
        System.out.println(x2);
    }

    public String getBarName() {
        return barName;
    }

    public void setBarName(String barName) {
        this.barName = barName;
    }

    public int getBarAge() {
        return barAge;
    }

    public void setBarAge(int barAge) {
        this.barAge = barAge;
    }

    public Date getBarDate() {
        return barDate;
    }

    public void setBarDate(Date barDate) {
        this.barDate = barDate;
    }

    @Override
    public String toString() {
        return "Bar{" +
                "barName='" + barName + '\'' +
                ", barAge=" + barAge +
                ", barDate=" + barDate +
                '}';
    }
}

 

测试类2:

package com.*;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.serializer.SerializeConfig;
import com.alibaba.fastjson.serializer.SimpleDateFormatSerializer;

import java.util.*;

public class TestFastJson {

    private static SerializeConfig mapping = new SerializeConfig();
    static {
        mapping.put(Date.class, new SimpleDateFormatSerializer("yyyy-MM-dd HH:mm:ss"));
    }

    public static void main(String[] args) {
        Foo f1 = new Foo();
        Date date = new Date();
        String text = JSON.toJSONString(date, mapping);
        System.out.println("text:" + text);
        //格式化后的json字符串
        System.out.println("f1:" + JSON.toJSONString(f1, true));
        //java bean 中的日期字段被格式化成yyyy-MM-dd HH:mm:ss
        String x2 =JSON.toJSONString(f1, mapping);
        System.out.println("x2:" + x2);
    }

    public static void json2List(){
        //List -> JSON array
        List<Bar> barList = new ArrayList<Bar>();
        barList.add(new Bar());
        barList.add(new Bar());
        barList.add(new Bar());
        String json= JSON.toJSONString(barList, true);
        System.out.println(json);
        //JSON array -> List
        List<Bar> barList1 = JSON.parseArray(json,Bar.class);
        for (Bar bar : barList1) {
            System.out.println(bar.toString());
        }
    }

    public static void json2Map(){
        //Map -> JSON
        Map<String,Bar> map = new HashMap<String, Bar>();
        map.put("a",new Bar());
        map.put("b",new Bar());
        map.put("c",new Bar());
        String json = JSON.toJSONString(map,true);
        System.out.println(json);
        //JSON -> Map
        Map<String,Bar> map1 = (Map<String,Bar>)JSON.parse(json);
        for (String key : map1.keySet()) {
            System.out.println(key+":"+map1.get(key));
        }
    }

    public static void array2JSON(){
        String[] arr_String    = {"a","b","c"};
        String json_arr_String = JSON.toJSONString(arr_String,true);
        System.out.println(json_arr_String);
        JSONArray jsonArray = JSON.parseArray(json_arr_String);
        for (Object o : jsonArray) {
            System.out.println(o);
        }
        System.out.println(jsonArray);
    }
    public static void array2JSON2(){
        Bar[] arr_Bar    = {new Bar(),new Bar(),new Bar()};
        String json_arr_Bar = JSON.toJSONString(arr_Bar,true);
        System.out.println(json_arr_Bar);
        JSONArray jsonArray = JSON.parseArray(json_arr_Bar);
        for (Object o : jsonArray) {
            System.out.println(o);
        }
        System.out.println(jsonArray);
    }

    public static void map2JSON(){
        Map map = new HashMap();
        map.put("a","aaa");
        map.put("b","bbb");
        map.put("c","ccc");
        String json= JSON.toJSONString(map);
        System.out.println(json);
        Map map1 = JSON.parseObject(json);
        for (Object o : map.entrySet()) {
            Map.Entry<String,String> entry = (Map.Entry<String,String>)o;
            System.out.println(entry.getKey()+"--->"+entry.getValue());
        }
    }
}

 

参考连接:https://www.w3cschool.cn/search?w=SerializeConfig

 

maven 坐标:

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.58</version>
</dependency>

转载于:https://my.oschina.net/qimhkaiyuan/blog/3077883

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值