JSON
JSON全称JavaScript Object Notation,JS对象简谱,是一种轻量级的数据交换格式。
数据交换格式是指服务端与服务端,客户端等等之间交换信息时所约定的格式
如下,是使用各种不同语言表示一本书的内容范例
一本书书名简介
java:
class Book{
private String name;
private String info;
getter/setter...
}
Book b = new Book(); b.setName(“金苹果”); b.setInfo(“种苹果”); ...
js:
var b = new Object();
b.name = "金苹果";
b.info = "种苹果";
XML:
<book>
<name>金苹果</name>
<info>种苹果</info>
</book>
JSON:
{ "name":"金苹果", "info":"种苹果" }
从上述范例可以看出,JSON用来传输信息最为简洁,除此以外,JSON在解析时相对XML也更易于处理,所以06年以后相对传播较广。
JSON语法
JSON使用大括号来表示一个对象,对象中使用键值对来表示属性和值;
JSON使用中括号来表示一个数组,
对象可以嵌套对象,也可以嵌套数组,数组和对象可以互相嵌套
键值对例子
"Key": Value, "Key2": Value2
键必须使用引号括住,键值对之间使用逗号隔开
值可以是JS中的任意数据类型
实例:(来自阿里云api)
{
"keyword": "机遇多",
"famousRemark": "过去我没得选\r\n现在我全都要",
"image": "http://img.xuanyiai.com/Fqrp8dA-lSTXH7xTrnLdO0YaJvTH",
"franceMonth": "花月 Floreal",
"period": "04.20-05.19",
"date": "2019.5.16",
"week": "Thursday",
"type": 1,
"energyNumber": 9
}
JSON解析网站
可以使用网站在线解析JSON文本,会更加清晰。
百度输入:“JSON解析”即可得到结果,随意打开一个网址输入JSON文本即可。
使用Java解析JSON
Java中常用两种库处理解析JSON格式语言,国内常用阿里的fastJSON,而国际上更多用Google Json(简称Gson)。
这两种库的下载地址如下:
- fastJson
- Gson
Gson实例
- 将对象转为Json
public static void main(String[] args) {
//1、新建gson对象
Gson g = new Gson();
//2、将Json转换为Book对象
Book b = new Book("100", "追风筝的人", "追死了");
String text = g.toJson(b);
System.out.println(text);
}
- 将Json转为对象
public static void main(String[] args) {
//1、新建gson对象
Gson g = new Gson();
//2、将对象转为Json {"id":"100","name":"追风筝的人","info":"追死了"}
Book b = g.fromJson("{\"id\":\"100\",\"name\":\"追风筝的人\",\"info\":\"追死了\"}",Book.class);
System.out.println(b.getInfo());
}
如果只用一次的Gson对象可以使用匿名方法
fastJson
本来想用到了再查,为了写博客就一次性贴上来吧
- 将对象转为JSON
public static void main(String[] args) {
Book book = new Book("1002","操作系统导论","虚拟化,并发,多线程");
//1. 转换
String json = JSON.toJSONString(book);
System.out.println(json);
}
- 将JSON转化为对象
public static void main(String[] args) {
//1. 转换 : {"id":"1002","info":"虚拟化,并发,多线程","name":"操作系统导论"}
Book book = JSON.parseObject("{\"id\":\"1002\",\"info\":\"虚拟化,并发,多线程\",\"name\":\"操作系统导论\"}", Book.class);
System.out.println(book.getId());
}
- 将JSON数组转化为列表
public static void main(String[] args) {
//1. 转换 : ["一二三","二三四","三四五"]
List<String> strings = JSON.parseArray("[\"一二三\",\"二三四\",\"三四五\"]", String.class);
System.out.println(strings.get(1));
}
如果觉得写得还不错就点个赞吧!