Java中JSONObject的使用

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 + "]";
    }
}
阅读更多
个人分类: Java
上一篇JavaScript设计模式——单例模式
下一篇一个基本的WebGL示例及注释
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭