JSON详解与fastjson的使用

说到JSON相信大家都很熟悉,它是java web开发过程中常用的一种数据交互格式,做开发的同学每天都在和它打交道,但是大家真的对JSON认识的深刻吗?鄙人不才,在此之前虽然用了好久了但是还真没静下心来好好总结一下JSON的使用。最近公司开新项目趁着搭框架的时间,认真的查了一下JSON的相关知识,做个总结分享给大家~

一.JSON介绍

JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式,采用一种“键:值”对的文本格式来存储和表示数据,在系统交换数据过程中常常被使用,是一种理想的数据交换语言。

二.JSON的形式与语法

JSON基本上分为两种表现形式,一种是JSON对象,一种是JSON数组。而这两种形式的结合会衍生出各种各样的Json字符串。

2.1 JSON对象

形式如下:

{
    "id":1,
    "username":"iterge",
    "password":"123456"
}

上面就是一个JSON对象的数据形式,根据上面的数据形式可以总结如下语法:

1:数据在花括号中

2:数据以"键:值"对的形式出现(其中键多以字符串形式出现,值可取字符串,数值,甚至其他json对象)

3:每两个"键:值"对以逗号分隔(最后一个"键:值"对省略逗号)

遵守上面3点,便可以形成一个json对象。

2.2 JSON数组

形式如下:

[
    {"username":"iterge","age":"20"},
    {"username":"itsange","age":"18"},
    {"username":"itsige","age":"16"}
]

这就是一个JSON数组的表示形式,得出以下语法:

1:数据在方括号中(可理解为数组)

2:方括号中每个数据以json对象形式出现

3:每两个数据以逗号分隔(最后一个无需逗号)

遵守上面3点,便可形成一个json对象数组(及一个数组中,存储了多个json对象)

2.3 两种基本形式的衍生

理解以上两种基本形式,接下来就可以衍生出你自己想要的任何形式的JSON格式的数据,如下:

{
    "name":"iterge",
    "brother":[
    {"name":"itsange","age":"18"},
    {"name":"itsige","age":"16"}],
    "address":"Chain"
}

2.4 JSON字符串

说到字符串,大家那是再熟悉不过了,java中被""包裹着的数据就是字符串!

所以JSON字符串是什么呢?当然是被""包裹着的JSON对象或JSON数组或两者的混合咯,我真是个小机灵鬼呀~

三.fastjson的介绍与使用

3.1 fastjson的简介与引用

介绍:fastjson是阿里开发的一款专门用于Java开发的包,可以方便的实现json对象与JavaBean对象的转换,实现JavaBean对象与json字符串的转换,实现json对象与json字符串的转换。除了这个fastjson以外,还有Google开发的Gson包,以及springmvc默认的jackson包,无论哪一种最终实现的结果是一样,所以在这里建议一下,都了解是可以的,但一定要有个擅长的。

使用:在spring boot项目中可以直接在pom文件中引入其坐标,将其添加到项目中,如下

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

3.2 使用

导出jar后可以看到如下图中所示,包中会有JSON、JSONArray、JSONObject三个类,这三个类也是我们最常用的,也是上面讲JSON时与其对应的类。所以,JSONObject代表JSON对象、JSONArray代表JSON数组、JSON代表JSONObject和JSONArray的转化。

接下来看使用方法:

JSONObject

在idea界面快捷键Alt+7会出现如下图所示的窗口,然后选中JSONObject就可以看到这个类的所有方法了,注意看会发现类中主要是getxx()方法。因为JSONObject相当于json对象,所以该类中主要封装了各种get方法,通过"键:值"对中的键来获取其对应的值。且方法的输入参数几乎皆为String类型,这是因为json对象中,"键:值"对的键都是String类型的。

所以对于JSONObject的操作,将它当成普通对象操作就可以了,利用jsonobject.getxx()方法来获取自己想要的值。

JSONArray

同样选中JSONArray类,查看它所拥有的方法如下图,JSONArray的方法和list的类似(实际上JSONArray源码中可以看出它实现了List接口),又因为JSONArray代表JSON数组,所以类中的方法主要用于直接操作json对象。比如这其中的add(),remove(),containsAll()方法,对应于json对象的添加,删除与判断。

例如其中常用的getJSONObject方法,当输入参数为索引位置时,可以得到相应的JSONObject对象

 public JSONObject getJSONObject(int index) {
     Object value = this.list.get(index);
     return value instanceof JSONObject ? (JSONObject)value : (JSONObject)toJSON(value);
 }

JSON

方法如下图,分析可得JSON类中的方法主要是针对JSONObject和JSONArray的操作。主要是实现json对象,json对象数组,javabean对象,json字符串之间的相互转化。

下面说几个常用方法:

1.toJSONString(Object object)方法,实现将对象转化为json 字符串

2.parseObject(String text)方法,实现json字符串转换为json对象或javabean对象

3.parseArray(String text)方法,实现json字符串转化为json对象数组或List<T>

4.toJSON(Object javaObject)方法,实现javabean对象转化为json对象

5.toJavaObject(JSON json, Class<T> clazz)方法,实现json对象转化为javabean对象

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悟空、大师兄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值