FastJson的介绍与使用(一)

FastJson的介绍与使用(一)

1.FastJson背景:

      FastJson是啊里巴巴的的开源库,用于对JSON格式的数据进行解析和打包。

2.FastJson介绍:

       FastJson特点如下:

        (1)能够支持将java bean序列化成JSON字符串,也能够将JSON字符串反序列化成Java bean。

        (2)顾名思义,FastJson操作JSON的速度是非常快的。

        (3)无其他包的依赖。

        (4)使用比较方便。

3.FastJson的使用

    在Maven项目中使用FastJson库,需要提前在Maven的配置文件中添加此FastJson包的依赖,如pom.xml文件。

添加下面的依赖:

    

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

在添加完依赖之后,便可以使用FastJson来解析Json报文和打包Json报文了。

使用FastJson解析Json报文需要用到:

public static JSONObject parseObject(String text)

这个方法支持将JSON报文转换成JSONObect结构体。

请看下面示例:

@Test
public void testParseObject() {
    String json = "{\"name\":\"json\",\"num\":1.02}";
    JSONObject jsonObject = JSONObject.parseObject(json);
}

调试输出得到:


在将JSON转换成JSONObject类之后,便可从这个类中获取每个字段的数据了:

@Test
public void testParseObject() {
    String json = "{\"name\":\"json\",\"num\":1.02}";
    JSONObject jsonObject = JSONObject.parseObject(json);

    //获取name字段的值
    System.out.println(jsonObject.getString("name"));
    //获取num字段的值
    System.out.println(jsonObject.getDouble("num"));
}

结果如下:


这样操作起来就比较方便。当然FastJson还有许多方法,这个去看API就可以了,都大同小异。

下面说一下,如何将Java bean转换成Json报文,这个其实比以上使用起来更加简单。

需要将Java bean转换成Json报文需要使用以下方法:

public static String toJSONString(Object object, SerializeConfig config, SerializerFeature... features)

第一个参数是需要传进的java bean类,第二个参数是序列化配置类(具体看API说明),用到序列化配置类的情况最常见的就是浮点型数据格式化的问题,这个下面会有例子进行说明。

测试用到的java bean类如下:

class Bean {
    private double num=1.02;
    private String name = "json";

    public double getNum() {
        return num;
    }

    public void setNum(double num) {
        this.num = num;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

转换为Json报文方法如下:

@Test
public void testFastJson() {
    Bean bean = new Bean();
    String text = JSON.toJSONString(bean);

    System.out.println(text);

}

主要传进类就可以了,序列化配置可以不传。

输出结果如下:


就是这么简单,就可以把Java Bean转换成Json字符串了。

或许你看到这里,就很想知道SerializeConfig这里类有什么用了。

下面我们以一个简单的例子来说明一下:

比如,如果前端传过来的浮点型数据是1,那么在FastJson序列化成java bean的时候,就是1.0了,不信?看下面例子:

@Test
public void testParseObject() {
    //这里模拟输入的值是1
    String json = "{\"name\":\"json\",\"num\":1}";
    JSONObject jsonObject = JSONObject.parseObject(json);

    //获取name字段的值
    System.out.println(jsonObject.getString("name"));
    
    //获取num字段的值,这里打印出来的是1.0
    System.out.println(jsonObject.getDouble("num"));
}

输出结果如下:


所以,这个时候就需要用到SerializeConfig这个序列化配置类啦。

使用序列化配置类后,我们就可以对浮点数进行格式化,以保证传回的Json报文字段的格式和接收是一样的。

我们可以这样写一个配置类:

@Test
public void testParseObject() {
    //这里模拟输入的值是1
    String json = "{\"name\":\"json\",\"num\":1}";
    Bean bean = new Bean();

    //获取解包后的值
    JSONObject jsonObject = JSONObject.parseObject(json);
    bean.setNum(jsonObject.getDouble("num"));
    bean.setName(jsonObject.getString("name"));

    //打印调试
    System.out.println("解包出来后的值:");
    System.out.println(bean.getName());
    System.out.println(bean.getNum());

    //构造序列化配置类
    SerializeConfig config = new SerializeConfig();

    //配置需要格式化的Double    config.put(Double.class, new DoubleSerializer(new DecimalFormat("#.##")));

    //打包Json报文
    String text = JSON.toJSONString(bean, config);
    System.out.println("打包出来后的值:");
    System.out.println(text);
}

输出结果如下:

  

这样就可以保证接收和响应的格式是一致的啦。

以上的都是FastJson的基本使用,FastJson的背景介绍参考了https://www.w3cschool.cn/fastjson/fastjson-api.html,有需要的,可以到这里查看FastJson Api中文版的说明。

以上所涉及的说明和技术,如果错误,麻烦各位指出,共同成长,谢谢。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值