1. 程式人生 > >JSON和JAVA物件之間的轉換小結

JSON和JAVA物件之間的轉換小結

    JSON(JAVAScript Object Notation, JS 物件簡譜) 是一種輕量級的資料交換格式。它基於歐洲計算機協會制定的js規範的一個子集,採用完全獨立於程式語言的文字格式來儲存和表示資料。

   1.為了便於轉換,需要匯入一些包(網上容易找到)。

     

 

  2. 具體轉換如下:

  (1)將JAVA物件轉換為JSON物件

     

 //1.將JAVA物件轉換為JSON物件
		User user = new User("張三","男",18);
		//轉化
		JSONObject jsonObject = JSONObject.fromObject(user);
		//將JSON物件轉字串輸出
		System.out.println(jsonObject.toString());

   輸出內容為:{"age":18,"name":"張三","sex":"男"}

 

   (2)將JSON字元轉換為JAVA物件

     

//2.將JSON字元轉換為JAVA物件
		String useStr = jsonObject.toString();
		JSONObject jsonobject = JSONObject.fromObject(useStr);
		User newUse = (User)JSONObject.toBean(jsonObject,User.class);
		System.out.println(newUse.toString());

   輸出內容為:name:張三    sex:男    age:18(便於觀察,此處重寫了toString())

   

  (3)將JAVA物件集合轉換為JSON物件陣列

   

// 3.將JAVA物件集合轉換為JSON物件陣列
		// 生成JAVA物件集合
		List<User> userList = new ArrayList<User>();
		User user1 = new User("李四", "男", 17);
		User user2 = new User("王五", "男", 18);
		userList.add(user1);
		userList.add(user2);
		// 轉化
		JSONArray jsonArray = JSONArray.fromObject(userList);
		// 將JSON物件陣列轉字串輸出
		System.out.println(jsonArray.toString());

 輸出內容為:[{"age":17,"name":"李四","sex":"男"},{"age":18,"name":"王五","sex":"男"}] 

 

(4)將JSON字串轉換為JAVA物件陣列

 

// 4.將JSON字串轉換為JAVA物件陣列
		String userListStr = jsonArray.toString();
		JSONArray jsonArray2 = JSONArray.fromObject(userListStr);
		List<User> users = (List<User>) JSONArray.toCollection(jsonArray2, User.class);
		for (User tempUser : users) {
			System.out.println(tempUser.toString());
		}

  輸出內容為:name:李四    sex:男    age:17
                       name:王五    sex:男    age:18

 

  User類如下:

package com.jsontest.model;

public class User {
	private String name;
	private String sex;
	private int age;

	public User() {
		super();
	}

	public User(String name, String sex, int age) {
		super();
		this.name = name;
		this.sex = sex;
		this.age = age;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getSex() {
		return sex;
	}

	public void setSex(String sex) {
		this.sex = sex;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	@Override
	public String toString() {
		return "name:"+this.name+"\t"+"sex:"+this.sex+"\t"+"age:"+this.age;
	}
	
	

}