什么是JSON
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。
这种格式最早应用在JavaScript中,JSON 语法是 JavaScript 对象表示语法的子集。
在Java中提供了解析JSON格式的类库
这种格式最早应用在JavaScript中,JSON 语法是 JavaScript 对象表示语法的子集。
在Java中提供了解析JSON格式的类库
java解析JSON的三种方式
1 使用开源组织实现的jar包(称为官方标准)http://json-lib.sourceforge.net/
2 google的gson框架
3 阿里巴巴的fast-json
2 google的gson框架
3 阿里巴巴的fast-json
案例一
<pre name="code" class="java">package com.qf.day30_3;
import java.util.Iterator;
import org.json.JSONObject;
import com.alibaba.fastjson.JSON;
import com.google.gson.Gson;
/**
* 使用三种方式解析json数据
* {name:"张三",age:20}
* @author wgy
*
*/
public class JsonDemo1 {
public static void main(String[] args) throws Exception{
String json="{name:'张三',age:20}";
json(json);
gson(json);
fastjson(json);
}
/**
* 官方
*/
public static void json(String json) throws Exception{
JSONObject object=new JSONObject(json);
String name=object.getString("name");
int age=object.getInt("age");
Person p=new Person(name, age);
System.out.println(p.getName()+"---"+p.getAge());
// Iterator<String> it= object.keys();
// while(it.hasNext()){
// String key=it.next();
// System.out.println(key+"---"+object.get(key));
// }
}
/**
* google
*/
public static void gson(String json){
Gson gson=new Gson();
Person p=gson.fromJson(json, Person.class);
System.out.println(p.getName()+"---"+p.getAge());
}
/**
* 阿里巴巴
*/
public static void fastjson(String json){
Person p=JSON.parseObject(json, Person.class);
System.out.println(p.getName()+"---"+p.getAge());
}
}
package com.qf.day30_3;
public class Person {
private String name;
private int age;
public Person() {
// TODO Auto-generated constructor stub
}
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
案例二
package com.qf.day30_4;
import org.json.JSONObject;
import com.alibaba.fastjson.JSON;
import com.google.gson.Gson;
/**
* 使用json解析
* {name:"张三",age:20,dept:{no:1,name:"android"}}
* @author wgy
*
*/
public class JsonDemo2 {
public static void main(String[] args) throws Exception{
String json="{name:'张三',age:20,dept:{no:1,name:'android'}}";
json(json);
gson(json);
fastjson(json);
}
/**
* 官方
*/
public static void json(String json) throws Exception{
JSONObject jsonObject=new JSONObject(json);
String name=jsonObject.getString("name");
int age=jsonObject.getInt("age");
JSONObject dept=jsonObject.getJSONObject("dept");
int no=dept.getInt("no");
String deptname=dept.getString("name");
Person p=new Person(name, age, new Dept(no, deptname));
System.out.println(p.getName()+"---"+p.getAge()+"--"+p.getDept().getNo()+"--"+p.getDept().getName());
}
/**
* google
*/
public static void gson(String json){
Gson gson=new Gson();
Person p=gson.fromJson(json, Person.class);
System.out.println(p.getName()+"---"+p.getAge()+"--"+p.getDept().getNo()+"--"+p.getDept().getName());
}
/**
* 阿里巴巴
*/
public static void fastjson(String json){
Person p=JSON.parseObject(json, Person.class);
System.out.println(p.getName()+"---"+p.getAge()+"--"+p.getDept().getNo()+"--"+p.getDept().getName());
}
}
package com.qf.day30_4;
public class Person {
private String name;
private int age;
private Dept dept;
public Person() {
// TODO Auto-generated constructor stub
}
public Person(String name, int age, Dept dept) {
super();
this.name = name;
this.age = age;
this.dept = dept;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Dept getDept() {
return dept;
}
public void setDept(Dept dept) {
this.dept = dept;
}
}
package com.qf.day30_4;
public class Dept {
private int no;
private String name;
public Dept() {
// TODO Auto-generated constructor stub
}
public Dept(int no, String name) {
super();
this.no = no;
this.name = name;
}
public int getNo() {
return no;
}
public void setNo(int no) {
this.no = no;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
案例三
package com.qf.day30_5;
import java.util.ArrayList;
import org.json.JSONArray;
import org.json.JSONObject;
import com.alibaba.fastjson.JSON;
import com.google.gson.Gson;
/**
* 使用json解析
* {no:1,name:"android",employees:[{name:"zhangsan",age:20},{name:"lisi"
* ,age:22},{name:"wangwu",age:23}]}
*
* @author wgy
*
*/
public class JsonParseDemo3 {
public static void main(String[] args) throws Exception{
String json = "{no:1,name:'android',employees:"
+ "[{name:'zhangsan',age:20}," + "{name:'lisi',age:22},"
+ "{name:'wangwu',age:23}]}";
json(json);
gson(json);
fastjson(json);
}
public static void json(String json)throws Exception {
ArrayList<Person> persons=new ArrayList<>();
JSONObject jsonObject=new JSONObject(json);
int no=jsonObject.getInt("no");
String name=jsonObject.getString("name");
JSONArray jsonArray=jsonObject.getJSONArray("employees");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject object=jsonArray.getJSONObject(i);
String _name=object.getString("name");
int age=object.getInt("age");
persons.add(new Person(_name, age));
}
Dept dept=new Dept(no, name, persons);
System.out.println(dept.getNo()+"---"+dept.getName()+"---"+dept.getEmployees().size());
for (Person p : dept.getEmployees()) {
System.out.println(" "+p.getName()+"--"+p.getAge());
}
}
public static void gson(String json) {
Gson gson=new Gson();
Dept dept=gson.fromJson(json, Dept.class);
System.out.println(dept.getNo()+"---"+dept.getName()+"---"+dept.getEmployees().size());
for (Person p : dept.getEmployees()) {
System.out.println(" "+p.getName()+"--"+p.getAge());
}
}
public static void fastjson(String json) {
Dept dept=JSON.parseObject(json, Dept.class);
System.out.println(dept.getNo()+"---"+dept.getName()+"---"+dept.getEmployees().size());
for (Person p : dept.getEmployees()) {
System.out.println(" "+p.getName()+"--"+p.getAge());
}
}
}
package com.qf.day30_5;
import java.util.ArrayList;
public class Dept {
private int no;
private String name;
private ArrayList<Person> employees;
public Dept() {
// TODO Auto-generated constructor stub
}
public Dept(int no, String name, ArrayList<Person> employees) {
super();
this.no = no;
this.name = name;
this.employees = employees;
}
public int getNo() {
return no;
}
public void setNo(int no) {
this.no = no;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public ArrayList<Person> getEmployees() {
return employees;
}
public void setEmployees(ArrayList<Person> employees) {
this.employees = employees;
}
}
package com.qf.day30_5;
public class Person {
private String name;
private int age;
public Person() {
// TODO Auto-generated constructor stub
}
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
注意:Gson解析json时类里面的属性名必须跟Json字段里面的Key一模一样
案例五
package com.qf.day30_6;
import org.json.JSONObject;
import com.alibaba.fastjson.JSON;
import com.google.gson.Gson;
/**
* 把对象 转换成json字符串
* @author wgy
*
*/
public class ObjToJson {
public static void main(String[] args) {
jsonToString();
gsonToString();
fastJsonToString();
}
public static void jsonToString(){
Student stu=new Student(1001, "冰冰", 20, false);
JSONObject jsonObject=new JSONObject(stu);
String s=jsonObject.toString();
System.out.println(s);
}
public static void gsonToString(){
Student stu=new Student(1001, "冰冰", 20, false);
Gson gson=new Gson();
String s=gson.toJson(stu);
System.out.println(s);
}
public static void fastJsonToString(){
Student stu=new Student(1001, "冰冰", 20, false);
String s=JSON.toJSONString(stu);
System.out.println(s);
}
}
package com.qf.day30_6;
public class Student {
private int stuNo;
private String name;
private int age;
private boolean gender;
public Student() {
// TODO Auto-generated constructor stub
}
public Student(int stuNo, String name, int age, boolean gender) {
super();
this.stuNo = stuNo;
this.name = name;
this.age = age;
this.gender = gender;
}
public int getStuNo() {
return stuNo;
}
public void setStuNo(int stuNo) {
this.stuNo = stuNo;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public boolean isGender() {
return gender;
}
public void setGender(boolean gender) {
this.gender = gender;
}
}
Gson解析数组格式的数据
public class GsonDemo2 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String json="[{'id':3,'name':'香港'}]";
Gson gson = new Gson();
ArrayList<City> list = gson.fromJson(json, new TypeToken<ArrayList<City>>(){}.getType());
System.out.println(list);
List<City> list2= JSON.parseArray(json, City.class);
System.out.println(list2);
}