网站首页 > java教程 正文
JSON(JavaScript Object Notation)是一种由道格拉斯·克罗克福特构想和设计、轻量级的数据交换语言,该语言以易于让人阅读的文字为基础,用来传输由属性值或者序列性的值组成的数据对象。尽管JSON是JavaScript的一个子集,但JSON是独立于语言的文本格式,并且采用了类似于C语言家族的一些习惯。
JSON 数据格式与语言无关,脱胎于 JavaScript,但目前很多编程语言都支持 JSON 格式数据的生成和解析。JSON 的官方 MIME 类型是 application/json,文件扩展名是 .json。
JSON用于描述资料结构,有两种结构存在:
对象(object):一个对象包含一系列非排序的名称/值对(pair),一个对象以{开始,并以}结束。每个名称/值对之间使用:分区。
数组 (array):一个数组是一个值(value)的集合,一个数组以[开始,并以]结束。数组成员之间使用,分区。
具体的格式如下:
名称/值(pair):名称和值之间使用:隔开,一般的形式是:
{name:value}
一个名称是一个字符串; 一个值(value)可以是一个字符串(string),一个数值(number),一个对象(object),一个布尔值(bool),一个有序列表(array),或者一个null值。
字符串:以""括起来的一串字符。
数值:一系列0-9的数字组合,可以为负数或者小数。还可以用e或者E表示为指数形式。
布尔值:表示为true或者false。
值的有序列表(array):一个或者多个值用,分区后,使用[,]括起来就形成了这样的列表,形如:
[value, value]
示例:
在maven项目中引用json依赖
java中使用json
我们也可以通过map集合来构建json
也可以使用javabean来构建json对象
从文件中读取json
引入依赖包
创建json文件
读取json内容
存在这样一种情况,当我们想获取json数据中key为name的value值,但是没有这个key 如果不加以处理,会引起程序的报错
我们可以采用以下的方式来保证程序的健壮性
Gson(又称Google Gson)是Google公司发布的一个开放源代码的Java库,主要用途为序列化Java对象为JSON字符串,或反序列化JSON字符串成Java对象。
Gson的应用主要为toJson与fromJson两个转换函数,而在使用这种对象转换之前需先创建好对象的类别以及其成员才能成功的将JSON字符串成功转换成相对应的对象。
class Examples {
private int answer1 = 100;
private String answer2 = "Hello world!";
Examples(){
} // default constructor
}
序列化JAVA对象成JSON字符串
Examples example1 = new Examples();
Gson gson = new Gson();
String json = gson.toJson(example1);
==> json is {"answer1":100,"answer2":"Hello world!"}
反序列化JSON字符串成对应的JAVA对象
Examples example2= gson.fromJson(json,Examples.class);
==> example2即與example1相同
对象example1透过toJson序列化成JSON字符串传递,再宣告一个对象example2为接收了JSON后透过fromJson反序列化成example2,故example1与example2相同
在pom文件中添加相关的依赖
基本示例:
这样看gson与json没有多大区别
但是我们可以这样玩,给属性加上注解
这个很有意思对吧,可以改变key值
构建个性化的gson数据
gson简单的回调函数示例:
使用gson隐藏数据 如下 sex的值并未显示出来
将gson数据解析成对象。这是json所做不到的
使用gson实现日期的解析
注意:gson数据中的数组可以和java中的集合实现无缝对接
猜你喜欢
- 2024-10-15 Java工具库——FastJson的40个常用方法
- 2024-10-15 SpringBoot返回Json(springboot返回json中文乱码)
- 2024-10-15 Hjson:JSON 的语法扩展(json语法结构)
- 2024-10-15 Python语法基础(14)JSON处理(python中json的用法)
- 2024-10-15 想学好Python,一定要掌握的基础模块之JSON
- 2024-10-15 java解析Json数据常用的两个解析库,实例分析
- 2024-10-15 IOS开发String字符串转JSON字典对象
- 2024-10-15 java中的注解:@SerializedName 和 @JsonProperty
- 2024-10-15 学习Python操作JSON,网络数据交换不用愁
- 2024-10-15 撸一个 JSON 解析器(json数据在线解析)
你 发表评论:
欢迎- 最近发表
-
- Java常量定义防暴指南:从"杀马特"到"高富帅"的华丽转身
- Java接口设计原则与实践:优雅编程的艺术
- java 包管理、访问修饰符、static/final关键字
- Java工程师的代码规范与最佳实践:优雅代码的艺术
- 编写一个java程序(编写一个Java程序计算并输出1到n的阶乘)
- Mycat的搭建以及配置与启动(mycat部署)
- Weblogic 安装 -“不是有效的 JDK Java 主目录”解决办法
- SpringBoot打包部署解析:jar包的生成和结构
- 《Servlet》第05节:创建第一个Servlet程序(HelloSevlet)
- 你认为最简单的单例模式,东西还挺多
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)