JAVA中JSON的用法总结

本文详细介绍如何使用Java实现对象与JSON之间的相互转换,包括单个对象、对象数组及复杂嵌套结构的处理。通过具体代码示例,展示如何解析JSON字符串到Java对象,以及如何将Java对象序列化为JSON字符串。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

分别建两个类,Student类与Grade类

package test;

public class Student {
    private int id;
    private String name;
    private int age;
    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 int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public Student(int id, String name, int age) {
        super();
        this.id = id;
        this.name = name;
        this.age = age;
    }
    public Student() {
        super();
    }
    @Override
    public String toString() {
        return "Student [id=" + id + ", name=" + name + ", age=" + age + "]";
    }
}
package test;

import java.util.ArrayList;

public class Grade {
    private int id;
    private String name;
    private ArrayList<Student> stus;
    public Grade(int id, String name, ArrayList<Student> stus) {
        super();
        this.id = id;
        this.name = name;
        this.stus = stus;
    }
    public Grade() {
        super();
    }
    @Override
    public String toString() {
        return "Grade [id=" + id + ", name=" + name + ", stus=" + stus + "]";
    }
    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 ArrayList<Student> getStus() {
        return stus;
    }
    public void setStus(ArrayList<Student> stus) {
        this.stus = stus;
    }
}

下面是测试方法

package test;

import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

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

public class jsonTest {
	public static void main(String[] args) {
		//对象嵌套数组嵌套对象
        String json1="{'id':1,'name':'JAVA','stus':[{'id':101,'name':'张三','age':16}]}";
        //数组
        String json2="['北京','天津','杭州']";
        //单个学生
        String json3="{'id':101,'name':'张三','age':16}";
        String json4="[{'id':101,'name':'张三','age':16,'address':'china'},{'id':102,'name':'李四','age':17},{'id':103,'name':'王五','age':16}]";

        //1
        //解析第一层---对象
        JSONObject jObject1=JSONObject.fromObject(json1);
        Grade grade=new Grade();
        grade.setId(jObject1.getInt("id"));
        grade.setName(jObject1.getString("name"));
        ArrayList<Student> stus=new ArrayList<>();
        grade.setStus(stus);
        //解析第二层----数组
        JSONArray jsonArray2=jObject1.getJSONArray("stus");
        //遍历数组获取元素----对象
        for(int i=0;i<jsonArray2.size();i++){
            //解析第三层----对象
            JSONObject jObject3=jsonArray2.getJSONObject(i);
            Student student=new Student(jObject3.getInt("id"), jObject3.getString("name"), jObject3.getInt("age"));
            grade.getStus().add(student);
        }

        System.out.println(grade);

        //获取当前对象的所有属性的迭代器对象
		@SuppressWarnings("unchecked")
		Iterator<String> iterator=jObject1.keys();
		while (iterator.hasNext()) {
		    String key = iterator.next();
		    System.out.println("属性:"+key);
		}

		Class clazz=grade.getClass();
		Field[] fields = clazz.getDeclaredFields();
		for(Field f : fields) {
			System.out.println(f.getName());//打印每个属性的名字
			System.out.println(f.getType().getName());//打印每个属性的类型名字
		}
		
        //2
		//获取数组对象
        JSONArray jArray=JSONArray.fromObject(json2);
        ArrayList<String> list=new ArrayList<>();
        //遍历获取元素
        for(int i=0;i<jArray.size();i++){
            //jArray.optString(i);//等价于getXXX
            list.add(jArray.getString(i));
        }
        System.out.println("解析结果:"+list);
        
        //3
        //将对象转换成字符串
        JSONObject jo=JSONObject.fromObject(grade);
        String joStr=jo.toString();
        System.out.println(joStr);
        
        JSONArray ja=JSONArray.fromObject(grade);
        String jaStr=ja.toString();
        System.out.println(jaStr);
        
        //4
        //JSON字符串转换成对象
        JSONObject joStu=JSONObject.fromObject(json3);
        Student st=(Student)JSONObject.toBean(joStu,Student.class);//如果joStu的属性与Student的不一致,会出现警告
        System.out.println(st);
        
        JSONArray jaStu=JSONArray.fromObject(json4);
        List<Student> listStu=JSONArray.toList(jaStu,Student.class);//如果jaStu的属性与Student的不一致,会出现警告
        System.out.println(listStu);
        
	}

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值