文档章节

fastJson 一些小例子

qimh
 qimh
发布于 07/23 16:34
字数 1256
阅读 4
收藏 0
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>

© 著作权归作者所有

qimh
粉丝 10
博文 455
码字总数 80474
作品 0
滁州
程序员
私信 提问
FastJson 1.2.17 发布,BugFixed 功能增强版本

FastJson 1.2.17 发布了。 Fastjson 是一个性能很好的 Java 语言实现的 JSON 解析器和生成器,来自阿里巴巴的工程师开发。 这是例行的BugFixed功能增强版本,修复或者增强都是一些小问题,大...

达尔文
2016/09/06
2.4K
4
AutoLoadCache 5.2 发布

5.2 版本只是优化一些小细节上的东西: 更新fastjson,因为 fastjson 1.2.28之前的版本有安全漏洞,所以需要及时更新; 增加一些debug信息; 当缓存时行设置为小于0的值时,不进行缓存。 最后...

qiujiayu
2017/04/13
1K
0
fastjson发布1.1.3版本

Fastjson 1.1.3是一个重要的功能增强版本,在这个版本开始,fastjson支持循环引用,完善支持WriteClassName的特性,使得fastjson开始具备替换hessian和java serialize的能力。 支持循环引用。...

wenshao
2011/08/29
2.1K
4
fastjson快速上手(4)

0.复杂对象解析思路 复杂的json对象的解析思路,就是一层一层的解析出JSONObject,再从JSONObject中解析出JSONObject,直到能取到需要字段为止 1. Fastjson API ParseProcess简介 ParseProce...

hutaishi
2017/08/25
142
0
fastjson 发布 1.0.6 版本

项目首页 http://code.alibabatech.com/wiki/display/FastJSON/Home 版本1.0.6是一个完善版本,持续功能增强和bug修复。内置对File、URI、URL、InetAddress、InetSocketAddress、UUID等类的序...

wenshao
2011/06/24
5.3K
2

没有更多内容

加载失败,请刷新页面

加载更多

排序––快速排序(二)

根据排序––快速排序(一)的描述,现准备写一个快速排序的主体框架: 1、首先需要设置一个枢轴元素即setPivot(int i); 2、然后需要与枢轴元素进行比较即int comparePivot(int j); 3、最后...

FAT_mt
昨天
4
0
mysql概览

学习知识,首先要有一个总体的认识。以下为mysql概览 1-架构图 2-Detail csdn |简书 | 头条 | SegmentFault 思否 | 掘金 | 开源中国 |

程序员深夜写bug
昨天
10
0
golang微服务框架go-micro 入门笔记2.2 micro工具之微应用利器micro web

micro web micro 功能非常强大,本文将详细阐述micro web 命令行的功能 阅读本文前你可能需要进行如下知识储备 golang分布式微服务框架go-micro 入门笔记1:搭建go-micro环境, golang微服务框架...

非正式解决方案
昨天
6
0
前端——使用base64编码在页面嵌入图片

因为页面中插入一个图片都要写明图片的路径——相对路径或者绝对路径。而除了具体的网站图片的图片地址,如果是在自己电脑文件夹里的图片,当我们的HTML文件在别人电脑上打开的时候图片则由于...

被毒打的程序猿
昨天
9
0
Flutter 系列之Dart语言概述

Dart语言与其他语言究竟有什么不同呢?在已有的编程语言经验的基础上,我们该如何快速上手呢?本篇文章从编程语言中最重要的组成部分,也就是基础语法与类型变量出发,一起来学习Dart吧 一、...

過愙
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部