使用json格式的数据进行通信

4 Java对象转换成JSON

4.1 问题

将Java对象转换成符合JSON格式的字符串,并测试。

4.2 方案

使用与json-lib.jar相关的jar文件完成类型的转换。

4.3 步骤

步骤一:新建实体类Friend

图- 15

步骤二:新建JSONTest类

在该类中添加四个方法,分别用于测试Java对象转换为JSON字符串,Java数组转换为JSON字符串,JSON字符串转换为Java对象,JSON字符串转换为Java数组。

步骤三:引入jar文件

在添加jar文件的时候,需要导入6个jar文件,缺一不可。如图-16所示。

图- 16

步骤四:添加具体的转换方法:Java对象转换为JSON字符串

图- 17

步骤五:运行结果

图– 18

步骤六:Java数组(集合)转换为JSON字符串

图– 19

运行结果:

图- 20

步骤七:JSON字符串转换为Java对象

图– 21

运行结果:

图- 22

步骤八:JSON字符串转换为Java数组(集合)

图– 23

运行结果:

图- 24

4.4 完整代码

Friend.java文件代码如下:

package bean;

public class Friend {
	private String name;
	private int age;

	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 String toString() {
		return this.name + "   " + this.age;
	}
}

JSONTest.java文件代码如下:

package json;

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

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

import bean.Friend;

public class JSONTest {
	/**
	 * Java对象转换为JSON字符串
	 */
	public static void test1() {
		Friend f = new Friend();
		f.setName("Zoro");
		f.setAge(19);
		JSONObject jsonObj = JSONObject.fromObject(f);
		String jsonStr = jsonObj.toString();
		System.out.println(jsonStr);
	}

	/**
	 * Java数组转换为JSON字符串
	 */
	public static void test2() {
		List<Friend> fs = new ArrayList<Friend>();
		for (int i = 0; i < 3; i++) {
			Friend f = new Friend();
			f.setName("Zoro" + (i + 1));
			f.setAge(19 + i);
			fs.add(f);
		}
		JSONArray jsonArr = JSONArray.fromObject(fs);
		String jsonStr = jsonArr.toString();
		System.out.println(jsonStr);
	}
	/**
	 * JSON字符串转换为Java对象
	 */
	public static void test3(){
		String jsonStr = "{\"name\":\"Luffy\",\"age\":17}";
		JSONObject jsonObj = JSONObject.fromObject(jsonStr);
		Friend friend = (Friend)JSONObject.
					toBean(jsonObj, Friend.class);
		System.out.println(friend);
	}
	
	/**
	 * JSON字符串转换为Java数组
	 */
	public static void test4(){
		String jsonStr = "[{\"name\":\"Luffy\",\"age\":17}," +
				"		{\"name\":\"Zoro\",\"age\":19}]";
		JSONArray jsonArr = JSONArray.fromObject(jsonStr);
		List<Friend> friends = (List<Friend>)JSONArray.
					toCollection(jsonArr, Friend.class);
		for(Friend f :friends){
			System.out.println(f);
		}
	}

	public static void main(String[] args) {
		 //test1();
		//test2();
		//test3();
		test4();
	}

}
posted @ 2016-03-21 16:19  跨七海的风  阅读(3925)  评论(0编辑  收藏  举报