Java中JSONObject的使用
JSON(JavaScript Object Notation)是一种与开发语言无关的、轻量级的数据格式。是一种数据格式的规范。具有易读易编写和易解析的优点。在Java中可以通过
org.json
包中的JSONObject
对操作JSON数据
JSON数据格式
Object
使用大括号
{}
包含的键值对,key必须为String类型,value为任何基本类型或者数据结构Array
使用中括号
[]
括起来,并用逗号分隔{ "name" : "zp", "age" : 12, "major" : ["数据结构", "高等数学"], "other" : { "birthday" : "1990-01-01", "like" : "study" } }
导入JSONObject
org.json
包下载地址:http://www.json.org/
构造JSONObject
JSONObject();
JSONObject(String str);
JSONObject(Object obj);
JSONObject(Map<String, Object> map);
JSONObject方法
// 获取基本数据类型
E getKeyName(String key);
// 获取数组
JSONArray getJSONArray(String key);
// 获取对象
JSONObject getJSONObject(String key);
// 增加属性
put(String key, Object value); //会调用value的toString()方法,如果是自定义对象注意重写toString()
put(String key, JSONObject value);
// 判断属性为空或者不存在
boolean isNull(String key);
// 判断属性存在且不为空
boolean has(String key);
例子
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
import org.json.JSONObject;
public class Main {
public static void main(String[] args) {
/**
* 字符串构建JSON对象
*/
String str = "{"
+ "\"name\" : \"zp\","
+ "\"age\" : 12,"
+ "\"has_g\" : true,"
+ "\"major\" : [\"first\", \"second\"],"
+ "\"other\" : {"
+ "\"birthday\" : \"1990-01-01\","
+ "\"like\" : \"study\""
+ "};"
+ "}";
JSONObject o = new JSONObject(str);
System.out.println(o.getString("name"));
System.out.println(o.getInt("age"));
System.out.println(o.getJSONArray("major"));
System.out.println(o.getJSONObject("other"));
/**
* JavaBean构建JSON对象
* 传入Object时,会将所有提供get方法的属性生成JSON
*/
People people = new People();
people.setId(1);
people.setName("zp");
people.setBirthday("1997-1-1");
people.setAge(16);
people.love = "134";
A a = new A();
a.setType("a123"); // 属性为自定义类不能生成
people.setA(null);
JSONObject peopleJson = new JSONObject(people);
System.out.println(peopleJson.has("a"));
System.out.println(peopleJson.isNull("a"));
System.out.println(peopleJson);
/**
* 无参构造JSONObject
*/
JSONObject jsonO = new JSONObject();
jsonO.put("a", "a");
jsonO.put("people", people);
System.out.println(jsonO);
/**
* MAP构造JSON
*/
Map<String, Object> mapStr = new HashMap<String,Object>();
mapStr.put("type", "jsonMap");
mapStr.put("arr", new int[]{1,2,3,4,5});
mapStr.put("obj", people);
JSONObject jsonMap = new JSONObject(mapStr);
System.out.println(jsonMap);
}
}
class A {
private String type;
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
}
public class People {
private int id;
private String name;
private String birthday;
private int age;
public String love;
private A a;
public String getLove() {
return love;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getBirthday() {
return birthday;
}
public void setBirthday(String birthday) {
this.birthday = birthday;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public A getA() {
return a;
}
public void setA(A a) {
this.a = a;
}
@Override
public String toString() {
return "People [id=" + id + ", name=" + name + ", birthday=" + birthday + ", age=" + age + ", love=" + love
+ ", a=" + a + "]";
}
}