1.定义
2.访问
alert(typeof(jsonObj));// object json就是一个对象
json本身是一个对象。
json中的key我们可以理解为是对象中的一个属性。
json中的key访问就跟访问对象的属性一样: json 对象.key
下面例子中和上面定义时是相同的
json中的数组 和 arr 是一样的,也有相同的操作
值是数组的取法
值是 一个json的取法
值是一个 json数组的情况
3.json的两个常用方法
json的存在有两种形式。
- 一种是:对象的形式存在,我们叫它json对象。
- 一种是:字符串的形式存在,我们叫它json字符串。
一般我们要操作json中的数据的时候,需要json对象的格式。
一般我们要 在客户端和服务器之间进行数据交换的时候,使用json字符串。JSON.stringify()把json对象转换成为json字符串
JSON.parse()把json字符串转换成为json对象
就是没有格式的 没有换行的 直接输出 原本的内容
4.JSON在java中的使用
使用了google的Gson
package com.atguigu.pojo;
public class Person {
private Integer id;
private String name;
public Person() {
}
public Person(Integer id, String name) {
this.id = id;
this.name = name;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Person{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
}
-
javaBean 和json的互转
@Test public void test1(){ Person person = new Person(1,"好帅!"); // 创建Gson对象实例 Gson gson = new Gson(); // toJson方法可以把java对象转换成为json字符串 String personJsonString = gson.toJson(person); //{"id":1,"name":"好帅!"} System.out.println(personJsonString); // fromJson把json字符串转换回Java对象 // 第一个参数是json字符串 // 第二个参数是转换回去原来的Java对象类型 Person person1 = gson.fromJson(personJsonString, Person.class); System.out.println(person1); }
-
List 和json的互转
先写一个空的类 需要基础com.google.gson.reflect.TypeToken,并且传入确定的参数 ,后面转化时的type需要用到(这个方法可以)
package com.atguigu.json; import com.atguigu.pojo.Person; import com.google.gson.reflect.TypeToken; import java.util.ArrayList; public class PersonListType extends TypeToken<ArrayList<Person>> { }
public void test2() { List<Person> personList = new ArrayList<>(); personList.add(new Person(1, "AA")); personList.add(new Person(2, "BB")); Gson gson = new Gson(); // 把List转换为json字符串 String personListJsonString = gson.toJson(personList); System.out.println(personListJsonString); //[{"id":1,"name": "AA"},{"id":2,"name":"BB"}] List<Person> list = gson.fromJson(personListJsonString, new PersonListType().getType()); System.out.println(list); Person person = list.get(0); System.out.println(person); }
-
map和json的互转
也可以写成 匿名内部类
package com.atguigu.json; import com.atguigu.pojo.Person; import com.google.gson.reflect.TypeToken; import java.util.HashMap; public class PersonMapType extends TypeToken<HashMap<Integer, Person>> { }
@Test public void test3(){ Map<Integer,Person> personMap = new HashMap<>(); personMap.put(1, new Person(1, "A好帅")); personMap.put(2, new Person(2, "B也好帅")); Gson gson = new Gson(); // 把 map 集合转换成为 json字符串 String personMapJsonString = gson.toJson(personMap); System.out.println(personMapJsonString); //{"1":{"id":1,"name":"国哥好帅"},"2":{"id":2,"name":"康师傅也好帅"}} // 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); }