JSON

#JSON

##一,JSON

###1,JSON简介

​ JSON 全称 JavaScript 对象表示法(JavaScript Object Notation),是一种数据交换格式,易于人的阅读和编写,和机器的解析和生成,被广泛用于服务器与客户端的数据交互中。

​ JSON是存储和交换文本的信息的语法,类似XML。

​ JSON采用完全独立于语言的文本格式,也使用了类似于C语言的习惯,这些特性使得JSON成为立项的数据交换语言。

###2,JSON和XML

​ JSON和XML都是常用的数据存储方式,双方的区别如下:

​ 1.XML数据冗长,JSON的语法格式简单且层次结构清晰。

​ 2.XML有效数据比例低。

​ 3.JSON可以存储 JavaScript 复合对象。

###3,JSON的格式

​ JSON的构建结构有两种,分别为对象和数组。

​ 1.对象:“名称:值”对的集合,即键值对。对象以"{","}"为头尾,其中以 key-value 的形式存储数据。

{

"name":"Eric,"

"age":22,

"sex":true

}

​ value中可以是用""括起的字符串,数值,布尔型常量,对象或者数组。

​ 2.数组:相比对象,数组为值得有序列表,可以存储大量相同类型的数据。

["Eric","Alex","Leo","Lily"]

​ 通过嵌套,可以组成复杂的数据结构:

{

"name":"Jim",

"sex":false,

"student":[{

"name":"Eric,"

"age":22

},{

​ ``“name”:“Alex,”`

"age":19

}]

}

##二,JSON的解析

###1,Gson

​ Gson是Google提供的一个Java库,可用于将Java对象转换为JSON对象,也可以反过来解析JSON对象。

public class Student {

private String name;
private Integer age;
private Boolean sex;

}

​ 1.转为JSON对象

	Student stu=new Student();
	stu.setName("Eric");
	stu.setAge(22);
	Gson gson=new Gson();
	
	//将对象转化为json字符串
	String json=gson.toJson(stu);
	System.out.println(json);
	
	//将对象转化为json数组
	List<String> list = new ArrayList<>();
	list.add("Alex");
	list.add("Eric");
	list.add("Leo");
	String json2= gson.toJson(list);
	System.out.println(json2);

​ 2.将JSON对象转为java对象

	Gson gson = new Gson();
	//将json解析成java对象
	String json = "{"
			+ "\"name\":\"Eric\","
			+ "\"age\":22,"
			+ "\"sex\":true"
			+ "}";
	Student stu = gson.fromJson(json,Student.class);

​ 3.将JSON对象转为list

String json2 = "["
+ "\"Alex\","
+ "\"Eric\""
+ "]";
List<String> stus = gson.fromJson(json2, new TypeToken<List<String>>() {}.getType());
System.out.println(stus.get(1));

​ 4.

String json3 = "[{"
+ "\"name\":\"Eric\","
+ "\"age\":22,"
+ "\"sex\":true"
+ "},"
+ "{"
+ "\"name\":\"Alex\","
+ "\"age\":19,"
+ "\"sex\":false"
+ "}]";
List<Student> stulist= gson.fromJson(json3, new TypeToken<List<Student>>() {}.getType());
System.out.println(stulist.get(1).getName());

​ 5.节点解析

String json = "{"
	+ "\"name\":\"Eric\","
  	+"\"age\":22,"
	+ "\"sex\":true,"
    +"\"grade\":{"
    +"\"Math\":80,"
    +"\"Eng\":90"
    +"}}";
//得到解析器
JsonParser parser = new JsonParser();
//将json格式的字符串转换成JsonElement对象
JsonElement element = parser.parse(json);
//根据文档结构,判断当前文档是何种类型的json对象
JsonObject root = element.getAsJsonObject();
//解析 布尔 类型
JsonPrimitive primitive = root.getAsJsonPrimitive("sex");
boolean sex = primitive.getAsBoolean();
System.out.println(sex);
//解析 数组 类型
JsonObject obj = root.getAsJsonObject("grade");
JsonPrimitive primitive2 = obj.getAsJsonPrimitive("Eng");
System.out.println(primitive2);

###2,fastjson

​ fastjson是阿里巴巴的一个json处理工具包,包括“序列化”和“反序列化”俩部分,具有速度快,功能强大,支持范型,支持自省,无依赖的特点。

​ 1.转为json字符串

	Student stu = new Student("Eric", 22, true);
	
	List<String> list = new ArrayList<>();
	list.add("Eric");
	list.add("Alex");
	list.add("Leo");
	
	List<User> ulist = new ArrayList<>();
	Student stu2= new Student("Alex", 19, false);
	Student stu3= new Student("Leo", 23, true);
	ulist.add(stu);
	ulist.add(stu2);
	ulist.add(stu3);
	
	System.out.println(JSON.toJSONString(user));
	System.out.println(JSON.toJSONString(list));
	System.out.println(JSON.toJSONString(ulist));

​ 2.解析Json对象

	String json = "{\"age\":22,\"name\":\"Eric\",\"sex\":true}";
	String json2 = "[\"Eric\",\"Alex\",\"Leo\"]";
	User user = JSON.parseObject(json,User.class);
	List<String> list = JSON.parseArray(json2,String.class);
	
	System.out.println(user.getName());
	System.out.println(list.get(0));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值