Java中JSONObject的使用

1人阅读 评论(0) 收藏 举报
分类:

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中使用JSONObject生成json 需要的所有包

  • 2012年10月10日 11:40
  • 1.17MB
  • 下载

JSONObject 使用方法详解

JSONObject-lib包是一个beans,collections,maps,java arrays和xml和JSON互相转换的包,本文给大家介绍jsonobject使用方法相关知识,感兴趣的朋友...
  • jg15617651654
  • jg15617651654
  • 2017-03-28 10:32:33
  • 12766

java操作json以及jsonObject、jsonArray的使用【申明:来源于网络】

java操作json以及jsonObject、jsonArray的使用java操作json以及jsonObject、jsonArray的使用...
  • yearHeaven
  • yearHeaven
  • 2017-04-27 21:17:01
  • 373

Java基础系列16:使用JSONObject和JSONArray解析和构造json字符串

转自:https://www.zifangsky.cn/561.html 一 介绍 在Java开发中,我们通常需要进行XML文档或JSON字符串的构造和解析。当然在Java Web开发中有一些...
  • zh123456zh789
  • zh123456zh789
  • 2017-03-27 10:25:12
  • 1959

[C#]JSONObject解析json,C# asp.net JSON解析

前言:公司最近遇到问题,以往C#的接口通讯都是走xml的形式,因为现在的主流接口都采用json数据格式,但c#中并没有提供特别的方法帮助开发者,解析和生成都非常麻烦,我做为一个移动端开发者,于是想到了...
  • cc_want
  • cc_want
  • 2016-01-25 09:14:03
  • 21232

JSONObject、JSONArray方法使用详解

1.JSONObject介绍 JSONObject-lib包是一个beans,collections,maps,java arrays和xml和JSON互相转换的包。 2.下载jar包 http...
  • sunny_na
  • sunny_na
  • 2017-01-20 11:59:37
  • 9864

使用Java JSONObject操作JSON字符串对象

1、如果我们需要实现一个配置管理的功能,那么为每个配置项目增加一个字段既复杂也不利于扩展,所以我们通常使用一个字符串来保存配置项目信息,这里介绍如何使用json的字符串解析来达到刚才说的目的。引入Js...
  • Baple
  • Baple
  • 2013-07-07 12:33:49
  • 20595

JAVA JSONObject Jar包

  • 2016年08月24日 11:50
  • 1.06MB
  • 下载

JSONObject put,accumulate,element的区别

public Object put (Object key, Object value) 将value映射到key下。如果此JSONObject对象之前存在一个value在这个key下,当前的valu...
  • z69183787
  • z69183787
  • 2014-01-22 10:09:16
  • 37304
    个人资料
    持之以恒
    等级:
    访问量: 6503
    积分: 537
    排名: 9万+
    最新评论