目录
1.什么是JSON
JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。JSON采用完全独立于语言的文本格式,而且很多语言都提供了对JSON的支持,这使得JSON成为理想的数据交换格式
1.1.JSON在JavaScript中的使用
1.1.1.JSON的定义
JSON由键值对组成,并且由花括号包围。每个键由引号引起来,键和值之间使用冒号进行分隔,多组键值对之间使用逗号进行分隔
javascript
var jsonObj = {
"key1":12,
"key2":"abc",
"key3":true,
"key4":[11,"arr",false],
"key5":{
"key5_1":51,
"key5_2":"key5_2_value"
},
"key6":[{
"key6_1_1":611,
"key6_1_2":"key6_1_2_value"
},{
"key6_2_1":621,
"key6_2_2":"key6_2_2_value"
}]
};
1.1.2.JSON的访问
JSON本身就是一个对象,我们可以把key理解为对象的一个属性
javascript
alert(typeof(jsonObj));
alert(jsonObj.key1);
alert(jsonObj.key2);
alert(jsonObj.key3);
alert(jsonObj.key4);
for (var i = 0; i < jsonObj.key4.length; i++) {
alert(jsonObj.key4[i]);
}
alert(jsonObj.key5.key5_1);
alert(jsonObj.key5.key5_2);
alert(jsonObj.key6);
var jsonItem = jsonObj.key6[0];
alert(jsonItem.key6_1_1);
alert(jsonItem.key6_1_2);
1.1.3.JSON的两个常用方法
JSON有两种形式,一种是JSON对象,另一种是JSON字符串。如果我们要操作JSON中的数据,使用JSON对象;如果要在客户端和服务端之间进行数据交换,使用JSON字符串
- JSON.stringify()
把JSON对象转换为JSON字符串
- JSON.parse()
把JSON字符串转换为JSON对象
javascript
var jsonObjString = JSON.stringify(jsonObj);
alert(jsonObjString);
var jsonObj2 = JSON.parse(jsonObjString);
alert(jsonObj2.key1);
alert(jsonObj2.key2);
1.2.JSON在Java中的使用
1.2.1.JavaBean和JSON的转换
java
@Test
public void test1() {
Person person = new Person(1, "p1");
Gson gson = new Gson();
//toJson方法可以把Java对象转换成JSON字符串
String personString = gson.toJson(person);
System.out.println(personJsonString);
//fromJson把JSON字符串转换回Java对象
//第二个参数是转换回去的Java对象类型
Person person1 = gson.fromJson(personJsonString, Person.class);
System.out.println(person1);
}
1.2.2.List和JSON的转换
java
@Test
public void test2() {
List<Person> personList = new ArrayList<>();
personList.add(new Person(1, "p1"));
personList.add(new Person(2, "p2"));
Gson gson = new Gson();
//把List转换为JSON字符串
String personListJsonString = gson.toJson(personList);
System.out.println(personListJsonString);
List<Person> list = gson.fromJson(personListJsonString, new PersonListType().getType());
System.out.println(list);
Person person = list.get(0);
System.out.println(person);
}
1.2.3.map和JSON的转换
java
@Test
public void test3() {
Map<Integer, Person> personMap = new HashMap<>();
personMap.put(1, new Person(1, "p1"));
personMap.put(2, new Person(2, "p2"));
Gson gson = new Gson();
String personMapJsonString = gson.toJson(personMap);
System.out.println(personMapJsonString);
Map<Integer, Person> personMap2 = gson.fromJson(personMapJsonString, new personMapType().getType());
Map<Integer, Person> personMap2 = gson.fromJson(personMapJsonString, new TypeToken<HashMap<Integer,Person>>(){}.getType());
System.out.println(personMap2);
Person p = personMap2.get(1);
System.out.println(p);
}