`
623deyingxiong
  • 浏览: 188349 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

gson对各种Java对象与json的转换的支持

    博客分类:
  • json
阅读更多
package com.test.json;

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

import com.google.gson.Gson;
import com.google.gson.annotations.SerializedName;
import com.google.gson.reflect.TypeToken;

public class GsonTest {
	public static void main(String[] args) {
		Gson gson = new Gson();

		Student s1 = new Student();
		Student s2 = new Student();

		List<Student> list = new ArrayList<Student>();
		list.add(s1);
		list.add(s2);

		Wrapper wrapper = new Wrapper();
		wrapper.setList(list);

		// bean -> json
		String jsonFromBean = gson.toJson(s1);
		String jsonFromList = gson.toJson(list);
		String jsonFromWrapper = gson.toJson(wrapper);

		System.out.println(jsonFromBean);
		System.out.println(jsonFromList);
		System.out.println(jsonFromWrapper);

		// json -> bean
		Student beanFromJson = gson.fromJson(jsonFromBean, Student.class);
		List<Student> listFromJson = gson.fromJson(jsonFromList,
				new TypeToken<List<Student>>() {
				}.getType());//这里有点小复杂
		Wrapper wrapperFromJson = gson.fromJson(jsonFromWrapper, Wrapper.class);

		System.out.println(beanFromJson);
		System.out.println(listFromJson);
		System.out.println(wrapperFromJson);
	}

}

class Student {
	@SerializedName("姓名")
	private String name = "+++";

	@SerializedName("性别")
	private String sex = "男";

	@Override
	public String toString() {
		return "Student [name=" + name + ", sex=" + sex + "]";
	}

}

class Wrapper {

	@SerializedName("学生列表")
	private List<Student> list;

	public void setList(List<Student> list) {
		this.list = list;
	}

	@Override
	public String toString() {
		return "Wrapper [list=" + list + "]";
	}

}

0
2
分享到:
评论
2 楼 623deyingxiong 2012-12-23  
kingpengzhen 写道
目前使用过protocalbuffer,这个gson的优点是什么呢?
json是自描述文本;gson是一个轻量型的转换工具。protocalbuffer没用过,上网查了一下,它不是自描述的,但转换后的数据量小,适合传输和大数据的缓存。
1 楼 kingpengzhen 2012-12-07  
目前使用过protocalbuffer,这个gson的优点是什么呢?

相关推荐

Global site tag (gtag.js) - Google Analytics