fastjson 对 json 字符串 JSONObject 和 JSONArray 互相转换操作示例

json 字符串和 json 对象互转

package com.tapt.instance;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

public class Jsontest {
	public static void main(String[] args) {  
		//json字符串转json对象
		String json="{\"name\":\"刘德华\",\"age\":35,\"some\":[{\"k1\":\"v1\",\"k2\":\"v2\"},{\"k3\":\"v3\",\"k4\":\"v4\"}]}";
		JSONObject jso=JSON.parseObject(json);//json字符串转换成jsonobject对象
		System.out.println("初始jsonObject:\n"+jso+"\n");
		//从json对象中获取json数组
		JSONArray jsarr=jso.getJSONArray("some");//jsonobject对象取得some对应的jsonarray数组
		System.out.println("jsonObject里面的jsonarray:\n"+jsarr+"\n");
		//从json数组中获取json对象
	   JSONObject ao=jsarr.getJSONObject(0);//jsonarray对象通过getjsonobjext(index)方法取得数组里面的jsonobject对象
	   System.out.println("jsonObject里面的jsonarray里面的第一个jsonobject:\n"+ao+"\n");
	   //从json对象中获取某个元素
	   String vString=ao.getString("k1");//jsonobject对象通过key直接取得String的值
	   System.out.println("jsonObject里面的jsonarray里面的第一个jsonobject里的键值对对k1取值:\n"+vString+"\n");
	}
}

控制台输出:

初始 jsonObject:

{"age":35,"name":"刘德华","some":[{"k1":"v1","k2":"v2"},{"k3":"v3","k4":"v4"}]}

jsonObject 里面的 jsonarray:

[{"k1":"v1","k2":"v2"},{"k3":"v3","k4":"v4"}]

jsonObject 里面的 jsonarray 里面的第一个 jsonobject:

{"k1":"v1","k2":"v2"}

jsonObject 里面的 jsonarray 里面的第一个 jsonobject 里的键值对对 k1 取值:

v1

遍历 json 数组

ps: 要遍历 jsonarray 对象,可以通过 size()方法取得 jsonarray 的长度,jsonarray.getJSONObject(index) 取得里面 JSONObject 对象;如:

for(int index=0;index<jsonarray.size();index++){}

json 对象和 java 对象互转

//java对象转化为json字符串
Person p1 = new Person();
p1.setAge(1);
p1.setName("zhangsan");
String s = JSON.toJSONString(p1);
System.out.println(s);
//json字符串转化为java对象
String jsonPerson =  "{\"age\":1,\"name\":\"zhangsan\"}";
Person p2 = JSON.parseObject(jsonPerson, Person.class);
p2.setAge(2);
p2.setName("lisi");
System.out.println(p2);
//List转jsonArray
List<Person> list = new ArrayList<>();
list.add(p1);
list.add(p2);

String listJson =  JSON.toJSONString(list);

System.out.println(listJson);
//json字符串转List
String listJson1 = "[{\"age\":1,\"name\":\"zhangsan\"},{\"age\":2,\"name\":\"lisi\"}]";

List<Person> list1 = JSON.parseArray(listJson1, Person.class);
System.out.println(list1);

java 对象转 json 对象

Data data = new Data();
data.setAction("add");
data.setId("1");
data.setOrdinal(8L);
data.setOrganUnitFullName("testJSON");
data.setParent("0");
data.setSuborderNo("58961");
JSONObject jsonObj = (JSONObject) JSON.toJSON(data);
JSON json = (JSON) JSON.toJSON(data);
System.out.println("jsonObj"+jsonObj);
System.out.println("json对象"+json);