什么是Json?
Json是一种轻量级的数据交换格式。易于人们的阅读和编写,同时也易于机器解析和生成。Json采用完全独立于语言的文本格式,而且很多语言都提供了对Json的支持。这样就使得Json成为理想的数据交换格式。
json是一种轻量级的数据交换格式
轻量级指的是跟xml做比较
数据交换指的是客户端和服务器之间业务数据的传递格式
JSON在JavaScript中的使用
Json的定义
Json是由键值对组成,并且由花括号(大括号)包围。每个键由引号引起来,键和值之间使用冒号进行分隔。
多组键值对之间使用逗号进行分隔。
var jsonTest={
"k1": 1,
"k2": false,
"k3": "你好",
"k4": [1,"2",false],
"k5": {
"k51": true
},
"k6":[{
"k61": true
},{
"k62": 111
}]
};
Json的访问
json本身是一个对象
Json中的key我们可以理解为是对象中的一个属性
Json中的key访问就跟访问对象的属性一样
//访问普通值
jsonTest.k1;
jsonTest.k2;
//访问数组 第一个元素
jsonTest.k4[0]
//访问json中的json
jsonTest.k5.k51
json的两个常用方法
json有两种形式:
1.一种对象的形式存在我们叫它Json对象
2.一种字符串的形式存在我们叫它json字符串
使用场景:我们要操作json中的数据的时候,需要json对象
我们要在客户端和服务器之间进行数据交换的时候使用json字符串
//把Json对象转化称为json字符串
JSON.stringify()
//把Json字符串转化为Json对象
JSON.parse()
Json在Java中的使用
JavaBean和Json的转换
引入依赖
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.2.4</version>
</dependency>
测试
/**
* JavaBean和json的转换
*/
@Test
public void test1(){
User user = new User(1,"张三","123","21341412@qq.com");
Gson gson = new Gson();
//把javaBean转换成json
String json = gson.toJson(user);
System.out.println(json);
//fromJson 把Json转换成JavaBean
System.out.println(gson.fromJson(json,User.class));
}
输出
{"id":1,"username":"张三","password":"123","email":"21341412@qq.com"}
User{id=1, username='张三', password='123', email='21341412@qq.com'}
List和Json的转换
/**
* List和json的转换
*/
@Test
public void test2(){
ArrayList<User> list = new ArrayList<>();
list.add(new User(1,"张三","123","21341412@qq.com"));
System.out.println(list);
Gson gson = new Gson();
String json = gson.toJson(list);
System.out.println(json);
System.out.println(gson.fromJson(json,new TypeToken<HashMap<Integer,User>>(){}.getType()));
}
Map和json的转换
/**
* Map和json的转换
*/
@Test
public void test3(){
Map<Integer, User> hashMap = new HashMap<>();
hashMap.put(1,new User(1,"张三","123","21341412@qq.com"));
hashMap.put(2,new User(2,"张四","123","21341413@qq.com"));
System.out.println("原始的map"+hashMap);
Gson gson = new Gson();
String json = gson.toJson(hashMap);
System.out.println(json);
HashMap hashMap1 = gson.fromJson(json,new TypeToken<HashMap<Integer,User>>(){}.getType());
System.out.println("转换回来的map---"+hashMap1);
}
注意:这里fromJson转换回对象时 原来的泛型会丢失 我们需要继承TypeToken传入原来的泛型本文中使用的匿名内部类方式