首页 / 程序员圈 / 正文
程序员:JSON、JSONObject 与 JSONArray 简单讲解
冬末春初冬o 发表于:2020-5-23 06:06:11 复制链接 看图 发表新帖
阅读数:21202

下载APP可以快速和圈友联系

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
法式员:JSON、JSONObject 与 JSONArray 简单讲授-1.jpg







fastjson简介

fastjson 是阿里巴巴的开源JSON剖析库,它可以剖析 JSON 格式的字符串,支持将 Java Bean 序列化为 JSON 字符串,也可以从 JSON 字符串反序列化到 JavaBean。比力牛的是下面这句话

fastjson 相对其他 JSON 库的特点是快,从 2011 年 fastjson 公布1.1.x版本以后,其性能从未被其他 Java 实现的 JSON 库超越

附上其 maven 库坐标

<dependency>

<groupId>com.alibaba</groupId>

<artifactId>fastjson</artifactId>

<version>1.2.61</version>

</dependency>

什么是 JSON

在最起头打仗 JSON 的时辰,不太大白 JSON 的概念,感受很笼统

实在 JSON 就是一种轻量级的数据交换格式,被普遍利用于 WEB 利用法式开辟

1.1 JSON 的上风

JSON 的简洁 和 清楚的条理结构

易于人阅读和编写,同时也易于机械剖析和天生

有用的提升收集传输效力

支持多种说话,很多风行的说话都对 JSON 格式有着很友爱的支持

1.2 JSON 工具

这就是一个平常利用的 JSON 工具,特征就是多个属性是被 {} 括起来的

{

"area": "山东菏泽",

"name": "马马马马马百万",

"age": 25

}

JSON 数组

JSON 数组实在就是包括了多个 JSON 工具的一个调集,数组是以 数组括号 [] 括起来的

[{

"area": "广东",

"name": "山溪",

"age": 25

}, {

"area": "沙西",

"name": "马希泰",

"age": 26

}]

JSON 数组并一定是要不异的 JSON 工具的调集,也可以是分歧的工具,不外我在开辟进程中并没有这么利用过,感受挺别扭的。由于假如将多个工具放进一个 JSONArray 中的话,下认识以为是不异范例的调集

下面这类范例也是正确的 JSON 数组格式

[{

"area": "江苏",

"name": "徐州",

"age": 25

}, {

"drugCode": "HXUDP000000000000MED0000342809",

"dosformName": "注射",

"drugName": "打点滴"

}]

JSON、JSON工具、JSON数组区分

JSON 呢只是一种宏观上的叫法,可以了解为是一种数据结构,就像 xml 结构一样,是一种规约性内容;而 JSON 工具则是对 JSON 的具体表现;JSON 数组则是将多个 JSON 工具停止存储的一个调集,可以设想成 Java 中的 List 和 Object 的关系

什么是 JSONObject

JSONObject 是按照 JSON 形式在 Java 中存在的工具映照

各大 JSON 类库的 JSONObject 内部实现也是不太一样的。这里以 fastjson 举例

public class JSONObject extends JSON implements Map<String, Object>, Cloneable, Serializable, InvocationHandler {

private static final long serialVersionUID = 1L;

private static final int DEFAULT_INITIAL_CAPACITY = 16;

private final Map<String, Object> map;

public JSONObject(){

this(DEFAULT_INITIAL_CAPACITY, false);

}

public JSONObject(Map<String, Object> map){

if (map == null) {

throw new IllegalArgumentException("map is null.");

}

this.map = map;

}

// 。。。。省略其他内容

}

可以看到 就是对 HashMap 的一层封装,并供给了一些本性化方式。有爱好的话可以去研讨下源码实现,这里就不逐一解读了

其利用方式和 HashMap 并无太大区分

JSONObject person = new JSONObject();

person.put("name", "马马马马马百万");

person.put("age", 25);

person.put("area", "山东菏泽");

JSONObject drug = new JSONObject();

drug.put("drugName", "盐酸丁卡因注射液");

drug.put("drugCode", "HXUDP000000000000MED0000342809");

drug.put("dosformName", "注射剂");

法式员:JSON、JSONObject 与 JSONArray 简单讲授-2.jpg







什么是 JSONArray

实在适才拿 List 与 Object 关系举例是有迹可查的

仅针对于 fastjson 而言,由于没看此外具体实现,怕被喷。蕴藉点的好

寄存数据的容器就是一个 List 的范例,默许建立为 ArrayList ,但不但限于

public class JSONArray extends JSON implements List<Object>, Cloneable, RandomAccess, Serializable {

private static final long serialVersionUID = 1L;

private final List<Object> list;

protected transient Object relatedArray;

protected transient Type componentType;

public JSONArray(){

this.list = new ArrayList<Object>();

}

public JSONArray(List<Object> list){

this.list = list;

}

public JSONArray(int initialCapacity){

this.list = new ArrayList<Object>(initialCapacity);

}

// 。。。省略余下部分

}

JSONArray 的平常利用方式

心里独白:不就是一个 List 中 套了个 Map 类结构嘛 对差池 品 你品 你仔细品

JSONObject person = new JSONObject();

person.put("name", "马马马马马百万");

JSONObject drug = new JSONObject();

drug.put("drugName", "盐酸丁卡因注射液");

JSONArray array = new JSONArray();

array.add(person);

array.add(drug);

Fastjson 的简单利用

将工具转换为json字符串

import com.alibaba.fastjson.JSON;

String jsonStr = JSON.toJSONString(person);

将json字符串转换为JSONObject工具

JSONObject jsonObject = JSON.parseObject(jsonStr);

将JSONObject 转换为工具

JSONObject person = new JSONObject();

person.put("name", "马马马马马百万");

person.put("age", 25);

Student stuObj = JSON.toJavaObject(person, Student.class);

竣事语

上述文章中并没有触及到复杂 JSON 工具,只是为了前期了解没有举例

下述 JSON 中触及到了 数值、字符串、内置 JSON 工具、数组

{

"article": {

"row": 1024,

"lastUpdateTime": "2019-12-13 19:27:59",

"Title": "Java 中 JSONArray 与 JSONObject 具体先容结构及利用",

"images": {

"Url": "http://www.images.com",

"Height": 256,

"Width": "256"

},

"sections": [17, 18, 19, 20]

}

}

关于 JSON格式化 相关的网站

JSON剖析及格式化本性网站 | 可以剖析JSON及XML字符串的网站

关于 JSON 类库项目地址

Json-lib | Gson | Jackson | FastJson

关于性能测试

性能测试的话可以在网上找些文章大概自己来考证下,可以从分歧的范例、数目几多等多维度测试

法式员:JSON、JSONObject 与 JSONArray 简单讲授-3.jpg


上一篇:Eclipse IDE(2019-09)教程文档:1、Eclipse 先容
下一篇:20 分钟教你搞懂 Git!
温馨提示:
下载好向圈客户端可以随时随地交流学习经验,也可以和圈友发起聊天成为好友
好向圈www.kuaixunai.com是一个专业经验分享交流平台,请提供优质的经验内容分享,拒绝任何广告内容出现,低质量广告内容硬广包含手机号码,微信,QQ或者二维码,网址等形式存在可能会审核不通过甚至封号 圈友联系仅限于好向圈APP进行及时沟通咨询 要想被各大搜索引擎尽快收录请做好内容原创工作,才会有更好的推广效果。
返回列表
使用道具 举报
#json, #对象, #可以, #数组, #就是
16 条评论
您需要登录后才可以回帖 登录 | 立即注册
一两半滥 发表于 2020-5-23 06:08:29 | 阅读全部
转发了
使用道具 举报
回复
真是无聊得很陆 发表于 2020-5-23 06:09:50 | 阅读全部
转发了
使用道具 举报
回复
123474225 发表于 2020-5-23 06:11:13 | 阅读全部
转发了
使用道具 举报
回复
秋江月菜 发表于 2020-5-23 06:15:16 | 阅读全部
转发了
使用道具 举报
回复
日上霜睾 发表于 2020-5-23 06:21:39 | 阅读全部
转发了
使用道具 举报
回复
SPlumage 发表于 2020-5-23 06:27:00 | 阅读全部
转发了
使用道具 举报
回复
山风无限大孔 发表于 2020-5-23 06:29:52 | 阅读全部
转发了
使用道具 举报
回复
benpao12345666 发表于 2020-5-23 06:32:38 | 阅读全部
转发了
使用道具 举报
回复
上左下右上下 发表于 2020-5-23 06:39:15 | 阅读全部
转发了
使用道具 举报
回复
Kevinkevin2017 发表于 2020-5-23 06:43:51 | 阅读全部
转发了
使用道具 举报
回复
敬爱的爷爷方 发表于 2020-5-23 06:50:46 | 阅读全部
转发了
使用道具 举报
回复
18151997184 发表于 2020-5-23 06:54:36 | 阅读全部
转发了
使用道具 举报
回复
小懿兄弟懿s 发表于 2020-5-23 06:55:39 | 阅读全部
转发了
使用道具 举报
回复
具加压凸 发表于 2020-5-23 07:01:44 | 阅读全部
转发了
使用道具 举报
回复
Lizeth张笨笨 发表于 2020-5-23 07:06:48 | 阅读全部
转发了
使用道具 举报
回复
rmobqp2411219 发表于 2020-5-23 07:08:11 | 阅读全部
转发了
使用道具 举报
回复
广告合作以及侵权投诉客服QQ:1623331347 江苏好向圈信息科技有限公司 网站地图1 网站地图2