Java对Json的一系列操作(构建、json与对象的转换)

前言:

什么是JSON?
1、JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation);
2、JSON 是轻量级的文本数据交换格式;
3、JSON 独立于语言 ;
4、JSON 具有自我描述性,更易理解;

JSON 使用 JavaScript 语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言。

一、JSON数据类型:

1、JSON对象:

JSON 对象在 “{}”中,对象中可以包含多个键值对。

2、JSON数组:

JSON 数组在中括号中书写,数组中包含多个对象。

二、Java对json的操作:

1、构建JSON:

package json;

import java.util.ArrayList;
import java.util.HashMap;

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

public class JsonTest {
	public static void main(String[] args) {
		
		try {
			//JsonObject和JsonArray区别就是JsonObject是对象形式,JsonArray是数组形式
	        //创建JsonObject第一种方法
	        JSONObject jsonObject = new JSONObject();
	        jsonObject.put("UserName", "马衍硕");
	        jsonObject.put("age", "21");
	        jsonObject.put("school", "SDUST");
	        System.out.println("jsonObject1:" + jsonObject);
	        
	        //创建JsonObject第二种方法
	        HashMap<String, String> hashMap = new HashMap<String, String>();
	        hashMap.put("UserName", "李琦琦");
	        hashMap.put("age", "21");
	        hashMap.put("school", "SUDST");
	        System.out.println("jsonObject2:" + JSONObject.fromObject(hashMap));
	        
	        //创建一个JsonArray方法1
	        JSONArray jsonArray = new JSONArray();
	        jsonArray.add(0, "小明");
	        jsonArray.add(1, "22");
	        jsonArray.add(2, "清华");
	        System.out.println("jsonArray1:" + jsonArray);
	        
	        //创建JsonArray方法2
	        ArrayList<String> arrayList = new ArrayList<String>();
	        arrayList.add("小明");
	        arrayList.add("22");
	        arrayList.add("清华");
	        System.out.println("jsonArray2:" + JSONArray.fromObject(arrayList));
	        
	        //如果JSONArray解析一个HashMap,则会将整个对象的放进一个数组的值中
	        System.out.println("jsonArray FROM HASHMAP:" + JSONArray.fromObject(hashMap));
	        
	        //组装一个复杂的JSONArray
	        JSONObject jsonObject2 = new JSONObject();
	        jsonObject2.put("UserName", "马衍硕");
	        jsonObject2.put("age", "22");
	        jsonObject2.put("school", "SDUST");
	        jsonObject2.element("students", arrayList);
	        System.out.println("jsonObject2:" + jsonObject2);
	        
	        System.out.println("get函数返回key(UserName)对应的value:"+jsonObject2.get("UserName"));
	        System.out.println("get函数返回key(students)对应的value:      "+jsonObject2.get("students"));
	        
	        
	        
		}catch(Exception e) {
			e.printStackTrace();
		}
		
	}

}

运行结果:
在这里插入图片描述

2、JSON和对象相互转换:

(1)对象转json:
这里主要是两个方法:

/*
*JSONObject.fromObject,将类对象转换为json对象,
*JSONArray.fromObject(),将类对象转化为json数组。
*/
JSONObject.fromObject()
JSONArray.fromObject()

这里我先定义了一个类对象:

package pers.xiaoma.model;

public class Student {
	private String name;
	private String age;
	private String school;
	
	public String getName() {
		return this.name;
	}
	public void setName(String str) {
		this.name = str;
	}
	
	public String getAge() {
		return this.age;
	}
	public void setAge(String str) {
		this.age = str;
	}
	
	public String getSchool() {
		return this.school;
	}
	public void setSchool(String str) {
		this.school = str;
	}
	
	public String toString() {
		return "Student[name="+this.name+
						",age="+this.age+",school"+this.school+"]";
	}
}

下面,将=student转换为JSON格式:

package json;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import pers.xiaoma.model.Student;

public class ObjectToJson {
	
	public static void main(String[] args) {
		Student student = new Student();
		student.setName("马衍硕");
		student.setAge("21");
		student.setSchool("SUDST");
		JSONObject json = JSONObject.fromObject(student);
		JSONArray array = JSONArray.fromObject(student);
		System.out.println("JsonObj: "+json);
		System.out.println("JsonArray: "+array);
		
	}

}

程序输出为:
在这里插入图片描述

(2)JSON字符串转为对象:

主要的思想是,先把字符串转化为JSON对象,再将JSON对象转化为具体的类对象。
看一个例子,还是以student类为例:

package json;

import net.sf.json.JSONObject;
import pers.xiaoma.model.Student;

public class JsontoObj {
	public static void main(String[] args) {
		
		String jsonStr = "{\"age\":\"21\",\"name\":\"马衍硕\",\"school\":\"SUDST\"}";
		//先将字符串转化为json对象
		JSONObject obj = JSONObject.fromObject(jsonStr);
		//再将json对象转化为具体的类对象
		Student student = (Student)JSONObject.toBean(obj,Student.class);
		System.out.println("Student Name: "+student.getName());
		System.out.println("Student Age: "+student.getAge());
		System.out.println("Student School: "+student.getSchool());
	}

}

程序运行结果:
在这里插入图片描述
详细代码我已上传至:https://download.csdn.net/download/mmayanshuo/10749153

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值