JSONObject和JSONArray的简单使用

Posted 迷失之路

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSONObject和JSONArray的简单使用相关的知识,希望对你有一定的参考价值。

一. jar包

  1. commons-lang.jar
  2. commons-beanutils.jar
  3. commons-collections.jar
  4. commons-logging.jar 
  5. ezmorph.jar
  6. json-lib-2.2.2-jdk15.jar

二. 代码

package com.test;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

public class Test {

    public static void main(String[] args) {
        new Test().test1();
        new Test().test2();
        new Test().test3();
        new Test().test4();
        new Test().test5();
        new Test().test6();
        new Test().test7();
    }

    /**
     * JSON字符串转JSONObject对象
     */
    public void test1() {
        String jsonStr = "{\"name\":\"ZhangSan\",\"sex\":\"boy\",\"age\":18}";
        JSONObject jsonObj = JSONObject.fromObject(jsonStr);
        System.out.println(jsonObj.toString());
    }

    /**
     * 简单JSONObject对象转java对象
     */
    public void test2() {
        JSONObject jsonObj = new JSONObject();
        jsonObj.put("name", "LiSi");
        jsonObj.put("sex", "girl");
        jsonObj.put("age", 17);
        Student student = (Student) JSONObject.toBean(jsonObj, Student.class);
        System.out.println(student.getName() + " | " + student.getSex() + " | " + student.getAge());
    }

    /**
     * 复杂JSONObject对象转java对象
     */
    @SuppressWarnings("rawtypes")
    public void test3() {
        List<Student> students = new ArrayList<Student>();
        students.add(new Student("ZhangSan", "boy", 18));
        students.add(new Student("LiSi", "girl", 17));

        BanJi banji = new BanJi();
        banji.setBanJiName("日语二班");
        banji.setStudents(students);

        JSONObject jsonObj = JSONObject.fromObject(banji);
        Map<String, Class> classMap = new HashMap<String, Class>();
        classMap.put("students", Student.class);
        BanJi banji2 = (BanJi) JSONObject.toBean(jsonObj, BanJi.class, classMap);
        System.out.println(banji2.getStudents().get(0).getName()); // 验证转换是否成功
    }

    /**
     * 简单java集合对象转JSONArray
     */
    public void test4() {
        List<Student> students = new ArrayList<Student>();
        students.add(new Student("ZhangSan", "boy", 18));
        students.add(new Student("LiSi", "girl", 17));
        JSONArray jsonArray = JSONArray.fromObject(students);
        System.out.println(jsonArray.toString());
    }

    /**
     * JSONArray转java集合对象
     */
    @SuppressWarnings({ "unchecked", "deprecation" })
    public void test5() {
        JSONObject jsonObj1 = new JSONObject();
        jsonObj1.put("name", "ZhangSan");
        jsonObj1.put("sex", "boy");
        jsonObj1.put("age", 18);

        JSONObject jsonObj2 = new JSONObject();
        jsonObj2.put("name", "lisi");
        jsonObj2.put("sex", "girl");
        jsonObj2.put("age", 17);

        JSONArray jsonArray = new JSONArray();
        jsonArray.add(0, jsonObj1);
        jsonArray.add(1, jsonObj2);

        List<Student> students3 = JSONArray.toList(jsonArray, Student.class);
        System.out.println(students3.get(0).getName());
        System.out.println(students3.get(1).getName());
    }

    /**
     * 复杂java集合对象转JSONArray
     */
    @SuppressWarnings({ "rawtypes", "unchecked", "deprecation" })
    public void test6() {
        BanJi banji1 = new BanJi();
        banji1.setBanJiName("日语一班");
        List<Student> students1 = new ArrayList<Student>();
        students1.add(new Student("ZhangSan", "boy", 18));
        banji1.setStudents(students1);

        BanJi banji2 = new BanJi();
        banji2.setBanJiName("日语二班");
        List<Student> students2 = new ArrayList<Student>();
        students1.add(new Student("LiSi", "girl", 17));
        banji2.setStudents(students2);

        List<BanJi> banjiList = new ArrayList<BanJi>();
        banjiList.add(banji1);
        banjiList.add(banji2);

        JSONArray jsonArray = JSONArray.fromObject(banjiList);
        Map<String, Class> classMap = new HashMap<String, Class>();
        classMap.put("students", Student.class);
        List<BanJi> banjiList2 = JSONArray.toList(jsonArray, BanJi.class, classMap);
        System.out.println(banjiList2.get(0).getStudents().get(0).getName());

    }

    /**
     * 拆分JSONArray为JSONObject
     */
    public void test7() {
        JSONObject jsonObj1 = new JSONObject();
        jsonObj1.put("name", "ZhangSan");
        jsonObj1.put("sex", "boy");
        jsonObj1.put("age", 18);

        JSONObject jsonObj2 = new JSONObject();
        jsonObj2.put("name", "lisi");
        jsonObj2.put("sex", "girl");
        jsonObj2.put("age", 17);

        JSONArray jsonArray = new JSONArray();
        jsonArray.add(0, jsonObj1);
        jsonArray.add(1, jsonObj2);

        JSONObject object = (JSONObject) jsonArray.get(0);
        System.out.println(object.toString());
    }

}

 

package com.test;

import java.util.List;

/**
 * 班级类
 */
public class BanJi {

    private String banJiName; // 班级名

    private List<Student> students; // 学生

    /**
     * 构造函数
     */
    public BanJi() {
        super();
    }

    // getters/setters(略)
}
package com.test;

/**
 * 学生类
 */
public class Student {

    private String name; // 姓名

    private String sex; // 性别

    private int age; // 年龄

    /**
     * 构造函数
     */
    public Student() {
        super();
    }

    /**
     * 构造函数
     */
    public Student(String name, String sex, int age) {
        super();
        this.name = name;
        this.sex = sex;
        this.age = age;
    }

    // getters/setters(略)
}

 

以上是关于JSONObject和JSONArray的简单使用的主要内容,如果未能解决你的问题,请参考以下文章

JSON ,JSONArray和JSONObject

在 Liferay Portlet 中创建 JSONObject 和 JSONArray

JsonArray和JsonObject的使用

JSONObject和JSONArray的基本使用

使用 JSONObject 和 JSONArray 构建 JSON Web Token

JSONObject与JSONArray的使用