采用fastjson包。

JSON:fastJson的解析器,用于JSON格式字符串与JSON对象及javaBean之间的转换。

JSONObject:fastJson提供的json对象。

JSONArray:fastJson提供json数组对象。

 

 

1. 采用字符串转Json对象使用:JSONObject jsonObject = JSON.parseObject(JSON_OBJ_STR); JSON_OBJ_STR为json格式字符串。

2. json对象转字符串使用:jsonObject.toJSONString()

3. 字符串转bean对象:Student student = JSON.parseObject(JSON_OBJ_STR, new TypeReference<Student>() {});

对于TypeReference<T>,由于其构造方法使用 protected 进行修饰,所以在其他包下创建其对象的时候,要用其实现类的子类:new TypeReference<Teacher>() {}

Java bean 在线转换 JSON json转bean对象_Java bean 在线转换 JSON

4.字符串转List对象:

ArrayList<Student> students = JSON.parseObject(JSON_ARRAY_STR, new TypeReference<ArrayList<Student>>() {});

 

5.bean对象转json字符串: String course2 = JSON.toJSONString(course);

6.完整案例:

package com.ithiema.jedis;

import java.util.ArrayList;
import java.util.List;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.ithiema.demo.Course;
import com.ithiema.demo.Student;
import com.ithiema.demo.Teacher;

public class JsonTest {
	// json字符串-简单对象型
	private static final String JSON_OBJ_STR = "{\"studentName\":\"lily\",\"studentAge\":12}";
	// json字符串-数组类型
	private static final String JSON_ARRAY_STR = "[{\"studentName\":\"lily\",\"studentAge\":12},{\"studentName\":\"lucy\",\"studentAge\":15}]";
	// 复杂格式json字符串
	private static final String COMPLEX_JSON_STR = "{\"teacherName\":\"crystall\",\"teacherAge\":27,\"course\":{\"courseName\":\"english\",\"code\":1270},\"students\":[{\"studentName\":\"lily\",\"studentAge\":12},{\"studentName\":\"lucy\",\"studentAge\":15}]}";

	/**
	 * json字符串-简单对象型与JSONObject之间的转换 prase vt:解析
	 */
	public static void testJSONStrToJSONObject() {

		JSONObject jsonObject = JSON.parseObject(JSON_OBJ_STR);
		// JSONObject jsonObject1 = JSONObject.parseObject(JSON_OBJ_STR);
		// //因为JSONObject继承了JSON,所以这样也是可以的

		System.out.println(jsonObject.getString("studentName") + ":" + jsonObject.getInteger("studentAge"));

	}

	/**
	 * json字符串-数组类型与JSONArray之间的转换
	 */
	public static void testJSONStrToJSONArray() {

		JSONArray jsonArray = JSON.parseArray(JSON_ARRAY_STR);
		// JSONArray jsonArray1 =
		// JSONArray.parseArray(JSON_ARRAY_STR);//因为JSONArray继承了JSON,所以这样也是可以的

		// 遍历方式1
		int size = jsonArray.size();
		for (int i = 0; i < size; i++) {
			JSONObject jsonObject = jsonArray.getJSONObject(i);
			System.out.println(jsonObject.getString("studentName") + ":" + jsonObject.getInteger("studentAge"));
		}

		// 遍历方式2
		for (Object obj : jsonArray) {
			JSONObject jsonObject = (JSONObject) obj;
			System.out.println(jsonObject.getString("studentName") + ":" + jsonObject.getInteger("studentAge"));
		}
	}

	/**
	 * 复杂json格式字符串与JSONObject之间的转换
	 */
	public static void testComplexJSONStrToJSONObject() {

		JSONObject jsonObject = JSON.parseObject(COMPLEX_JSON_STR);
		// JSONObject jsonObject1 =
		// JSONObject.parseObject(COMPLEX_JSON_STR);//因为JSONObject继承了JSON,所以这样也是可以的

		String teacherName = jsonObject.getString("teacherName");
		Integer teacherAge = jsonObject.getInteger("teacherAge");
		JSONObject course = jsonObject.getJSONObject("course");
		JSONArray students = jsonObject.getJSONArray("students");

	}

	/**
	 * json字符串-简单对象与JavaBean_obj之间的转换
	 */
	public static void testJSONStrToJavaBeanObj() {

		Student student = JSON.parseObject(JSON_OBJ_STR, new TypeReference<Student>() {
		});
		// Student student1 = JSONObject.parseObject(JSON_OBJ_STR, new
		// TypeReference<Student>() {});//因为JSONObject继承了JSON,所以这样也是可以的

		System.out.println(student.getStudentName() + ":" + student.getStudentAge());

	}

	/**
	 * json字符串-数组类型与JavaBean_List之间的转换
	 */
	public static void testJSONStrToJavaBeanList() {

		ArrayList<Student> students = JSON.parseObject(JSON_ARRAY_STR, new TypeReference<ArrayList<Student>>() {
		});
		// ArrayList<Student> students1 = JSONArray.parseObject(JSON_ARRAY_STR, new
		// TypeReference<ArrayList<Student>>() {});//因为JSONArray继承了JSON,所以这样也是可以的

		for (Student student : students) {
			System.out.println(student.getStudentName() + ":" + student.getStudentAge());
		}
	}

	/**
	 * 复杂json格式字符串与JavaBean_obj之间的转换
	 */
	public static void testComplexJSONStrToJavaBean() {

		Teacher teacher = JSON.parseObject(COMPLEX_JSON_STR, new TypeReference<Teacher>() {
		});
		// Teacher teacher1 = JSON.parseObject(COMPLEX_JSON_STR, new
		// TypeReference<Teacher>() {});//因为JSONObject继承了JSON,所以这样也是可以的
		String teacherName = teacher.getTeacherName();
		Integer teacherAge = teacher.getTeacherAge();
		Course course = teacher.getCourse();
		List<Student> students = teacher.getStudents();
		String course2 = JSON.toJSONString(course);
		System.out.println(course2);
	}

	/*
	 * 1,对于JSON对象与JSON格式字符串的转换可以直接用 toJSONString()这个方法。
	 * 
	 * 2,javaBean与JSON格式字符串之间的转换要用到:JSON.toJSONString(obj);
	 * 
	 * 3,javaBean与json对象间的转换使用:JSON.toJSON(obj),然后使用强制类型转换,JSONObject或者JSONArray。
	 */

	public static void main(String[] args) {
		testComplexJSONStrToJavaBean();
	}
}

总结:1.json字符串 转 对象:JSON.parseObject(“字符串”,new TypeReference<类名>(){});

           2.对象转json字符串:jsonObject.toJSONstring();

补充:json对象 JSONObject 获取 内部的value时,用get+“类名”()得到。如getString("name");

用于redis存对象一般都将对象转为json字符串存入