您的位置:首页 > Web前端 > JavaScript

json解析

2016-05-21 09:59 686 查看

什么是JSON

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。

这种格式最早应用在JavaScript中,JSON 语法是 JavaScript 对象表示语法的子集。

在Java中提供了解析JSON格式的类库

java解析JSON的三种方式

1 使用开源组织实现的jar包(称为官方标准)http://json-lib.sourceforge.net/

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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  json gson