一、Json简介
Json是行业内使用最广泛的数据传输格式;
Json是一种与开发语言无关的、轻量级的数据格式。全称Javascript Object Notation;
二、优点
易于人的阅读和编写,易于程序的解析与生产
三、数据结构与基本类型
1. 数据结构:Object、Array
Object:使用花括号{}包含的键值对结构,Key必须是String类型,value为任何基本类型或数据结构。
Array:使用中括号[]来起始,并用逗号","来分隔元素。
2. 基本类型:string、number、object、array、true、false、null
victor.json
{
"name" : "Victor Xu",
"age" : 26.4,
"birthday" : "1991-03-31",
"school" : "蓝翔技校",
"major" : ["理发", "挖掘机"],
"has_girlfriend" : false,
"car" : null,
"house" : null,
"comment" : "这是一个注释"
}
四、Java中常用的Json数据解析的技术
Json的官方网站:http://www.json.org/,在Json的官网当中,往下浏览,会发现各个语言的各种Json的工具包;在这里我只简单的介绍两种常用的Java当中的Json工具包,org.json和gson;
五、org.json工具包
1. 通过JSONObject对象,生成Json数据
JsonTest.java
package test.other.json;
import org.json.JSONException;
import org.json.JSONObject;
public class JsonTest {
public static void main(String[] args) {
jSONObjectjSONObjectSample();
}
private static void jSONObject() {
JSONObject victor = new JSONObject();
Object nullObj = null;
try {
victor.put("name", "Victor Xu");
victor.put("age", 26.4);
victor.put("birthday", "1991-03-31");
victor.put("school", "蓝翔技校");
victor.put("major", new String[]{"理发", "挖掘机"});
victor.put("has_girlfriend", false);
victor.put("car", nullObj);
victor.put("house", nullObj);
victor.put("comment", "这是一个注释");
// print
System.out.println(victor.toString());
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
2. 通过Map集合生成,生成Json数据
JsonTest.java
package test.other.json;
import java.util.HashMap;
import java.util.Map;
import org.json.JSONObject;
public class JsonTest {
public static void main(String[] args) {
jSONObject();
}
private static void jSONObject() {
Map<String, Object> victor = new HashMap<String, Object>();
Object nullObj = null;
victor.put("name", "Victor Xu");
victor.put("age", 26.4);
victor.put("birthday", "1991-03-31");
victor.put("school", "蓝翔技校");
victor.put("major", new String[]{"理发", "挖掘机"});
victor.put("has_girlfriend", false);
victor.put("car", nullObj);
victor.put("house", nullObj);
victor.put("comment", "这是一个注释");
System.out.println(new JSONObject(victor).toString());
}
}
3. 通过Javabean,生成Json数据
Diaosi.java
package test.other.json.bean;
import java.util.Arrays;
public class Diaosi {
private String name;
private String school;
private boolean has_girlfriend;
private double age;
private Object car;
private Object house;
private String[] major;
private String comment;
private String birthday;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSchool() {
return school;
}
public void setSchool(String school) {
this.school = school;
}
public boolean isHas_girlfriend() {
return has_girlfriend;
}
public void setHas_girlfriend(boolean has_girlfriend) {
this.has_girlfriend = has_girlfriend;
}
public double getAge() {
return age;
}
public void setAge(double age) {
this.age = age;
}
public Object getCar() {
return car;
}
public void setCar(Object car) {
this.car = car;
}
public Object getHouse() {
return house;
}
public void setHouse(Object house) {
this.house = house;
}
public String[] getMajor() {
return major;
}
public void setMajor(String[] major) {
this.major = major;
}
public String getComment() {
return comment;
}
public void setComment(String comment) {
this.comment = comment;
}
public String getBirthday() {
return birthday;
}
public void setBirthday(String birthday) {
this.birthday = birthday;
}
@Override
public String toString() {
return "Diaosi [name=" + name + ", school=" + school
+ ", has_girlfriend=" + has_girlfriend + ", age=" + age
+ ", car=" + car + ", house=" + house + ", major="
+ Arrays.toString(major) + ", comment=" + comment
+ ", birthday=" + birthday + "]";
}
}
JsonTest.java
package test.other.json;
import org.json.JSONObject;
import test.other.json.bean.Diaosi;
public class JsonTest {
public static void main(String[] args) {
jSONObject();
}
private static void jSONObject() {
Diaosi victor = new Diaosi();
victor.setName("Victor");
victor.setAge(26.4);
victor.setBirthday("1991-03-31");
victor.setSchool("蓝翔技校");
victor.setMajor(new String[]{"理发", "挖掘机"});
victor.setHas_girlfriend(false);
victor.setCar(null);
victor.setHouse(null);
victor.setComment("这是一个注释");
System.out.println(new JSONObject(victor));
}
}
4. 读取Json文件
victor.json
{
"name" : "Victor Xu",
"age" : 26.4,
"birthday" : "1991-03-31",
"school" : "蓝翔技校",
"major" : ["理发", "挖掘机"],
"has_girlfriend" : false,
"car" : null,
"house" : null,
"comment" : "这是一个注释"
}
JsonTest.java
package test.other.json;
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
public class JsonTest {
public static void main(String[] args) throws IOException, JSONException {
File file = new File(JsonTest.class.getResource("/victor.json").getFile());
String content = FileUtils.readFileToString(file);
JSONObject jsonObject = new JSONObject(content);
if (!jsonObject.isNull("name")) {
System.out.println("姓名是:" + jsonObject.getString("name"));
}
if (!jsonObject.isNull("nickname")) {
System.out.println("姓名是:" + jsonObject.getString("nickname"));
}
System.out.println("年龄:" + jsonObject.getDouble("age"));
System.out.println("有没有女朋友?" + jsonObject.getBoolean("has_girlfriend"));
JSONArray majorArray = jsonObject.getJSONArray("major");
for (int i = 0; i < majorArray.length(); i++) {
String m = (String)majorArray.get(i);
System.out.println("专业-" + (i + 1) + m);
}
}
}
六、gson工具包
1. 通过Javabean,生成Json数据
JavaTest.java
package test.other.json;
import test.other.json.bean.Diaosi;
import com.google.gson.Gson;
public class JsonTest {
public static void main(String[] args) {
Diaosi victor = new Diaosi();
victor.setName("Victor");
victor.setAge(26.4);
victor.setBirthday("1991-03-31");
victor.setSchool("蓝翔技校");
victor.setMajor(new String[]{"理发", "挖掘机"});
victor.setHas_girlfriend(false);
victor.setCar(null);
victor.setHouse(null);
victor.setComment("这是一个注释");
Gson gson = new Gson();
System.out.println(gson.toJson(victor));
}
}
2. 读取Json文件
package gson;
import java.io.File;
import java.io.IOException;
import json.ReadJsonSample;
import org.apache.commons.io.FileUtils;
import bean.Diaosi;
import com.google.gson.Gson;
public class GsonReadSample {
public static void main(String[] args) throws IOException {
File file = new File(ReadJsonSample.class.getResource("/victor.json").getFile());
String content = FileUtils.readFileToString(file);
Gson gson = new Gson();
Diaosi victor = gson.fromJson(content, Diaosi.class);
System.out.println(victor.toString());
}
}