`

使用Google的Gson实现对象和json字符串之间的转换

 
阅读更多

使用Google的Gson实现对象和json字符串之间的转换

需要gson-1.4.jar

 

1.JsonUtil.java

package com.snail.json;

import java.lang.reflect.Type;
import com.google.gson.Gson;
/**
 * Java对象和JSON字符串相互转化工具类
 * @author penghuaiyi
 * @date 2013-08-10
 */
public final class JsonUtil {
	
	private JsonUtil(){}
	
    /**
     * 对象转换成json字符串
     * @param obj 
     * @return 
     */
    public static String toJson(Object obj) {
        Gson gson = new Gson();
        return gson.toJson(obj);
    }

    /**
     * json字符串转成对象
     * @param str  
     * @param type
     * @return 
     */
    public static <T> T fromJson(String str, Type type) {
        Gson gson = new Gson();
        return gson.fromJson(str, type);
    }

    /**
     * json字符串转成对象
     * @param str  
     * @param type 
     * @return 
     */
    public static <T> T fromJson(String str, Class<T> type) {
        Gson gson = new Gson();
        return gson.fromJson(str, type);
    }

}

 2. Person.java

package com.snail.json;

public class Person {
	private int id;
	private String name;
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	
}

 3. Test.java

package com.snail.json;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

import com.google.gson.reflect.TypeToken;

public class Test {
	
	/**
	 * 一般对象的转换
	 */
	public static void objectToJson(){
		Person person = new Person();
		person.setId(1);
		person.setName("one");
		 //javabean转换成json字符串
		String jsonStr = JsonUtil.toJson(person);
		System.out.println(jsonStr);
		
		//json字符串转换成javabean
		Person newPerson = JsonUtil.fromJson(jsonStr, Person.class);
		System.out.println(person == newPerson);
		System.out.println(newPerson.getId()+","+newPerson.getName());
	}
	
	/**
	 * 复合结构数据转换(List)
	 */
	public static void listToJson(){
		Person person1 = new Person();
		person1.setId(1);
		person1.setName("one");
		
		Person person2 = new Person();
		person2.setId(2);
		person2.setName("two");
		
		List<Person> list = new ArrayList<Person>();
		list.add(person1);
		list.add(person2);
		
	    //javabean转换成json字符串
		String jsonStr = JsonUtil.toJson(list);
		System.out.println(jsonStr);
		
		
		//json字符串转换成javabean对象
		List<Person> rtn = JsonUtil.fromJson(jsonStr, new TypeToken<List<Person>>(){}.getType());
		for(Person person : rtn){
			System.out.println(person.getId()+","+person.getName());
		}
	}
	
	/**
	 * 复合结构数据转换(Map)
	 */
	public static void mapToJson(){
		Person person1 = new Person();
		person1.setId(1);
		person1.setName("one");
		Person person2 = new Person();
		person2.setId(2);
		person2.setName("two");
		
		Map<Integer,Person> map = new HashMap<Integer,Person>();
		map.put(person1.getId(), person1);
		map.put(person2.getId(), person2);
		
		 //javabean转换成json字符串
		String jsonStr = JsonUtil.toJson(map);
		System.out.println(jsonStr);
		
		//json字符串转换成Map对象
		Map<Integer,Person> rtn = JsonUtil.fromJson(jsonStr, new TypeToken<Map<Integer,Person>>(){}.getType());
		for(Entry<Integer, Person> entry : rtn.entrySet()){
			Integer key = entry.getKey();
			Person newPerson = entry.getValue();
			System.out.println("key:"+key+","+newPerson.getId()+","+newPerson.getName());
		}
	}
	

	public static void main(String[] args) {
		objectToJson();
		System.out.println("****************************");
		listToJson();
		System.out.println("****************************");
		mapToJson();
	}
	
 

}

 

分享到:
评论

相关推荐

    利用Google Gson实现JSON字符串和对象之间相互转换

    利用Google Gson实现JSON字符串和对象之间相互转换,内含源码和jar包

    Json转换利器Gson实例代码,java对象或者list转换为json字符串

    Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库。可以将一个 JSON 字符串转成一个 Java 对象,或者反过来。 java对象或者list转换为json字符串

    Google Gson的使用方法,实现Json结构的相互转换源代码

    在Java开发中,有时需要保一个数据结构成字符串,可能你会考虑用Json,但是当Json字符串转换成Java对象时,转换成的是JsonObject,并不是你想要的Class类型的对象,操作起来就很不是愉悦,本代码就解决了这些问题。

    Json转换利器Gson实例代码

    Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库。可以将一个 JSON 字符串转成一个 Java 对象,或者反过来。 Json转换利器Gson之实例一-简单对象转化和带泛型的List转化 ...

    gson-2.8.6.jar下载

    它可以将Java对象转换成JSON字符串,也可以将JSON字符串转换成Java对象。gson库简单易用,性能良好,所以很受欢迎,被广泛应用于Android和Java项目中。 gson的主要功能有: 1. 可以将Java对象转换成JSON字符串,也可以将...

    com.google.gson.Gson 2.8.5 jar包

    截止至2018-11-27,github上com.google.gson.Gson 最新的2.8.5jar包。强大的json字符串解析功能及将字符串转换为json格式。我16年上传的免费下载的2.8.0版本不知道为什么变成下载需要50分了

    google-json-2.8.2解析包及源码包

    完成服务器端与客户端Json与字符串之间的转换功能,如果只需使用google-json。那解压后将gson-2.8.2.jar导入到项目中即可使用。

    com.google.gson.Gson 2.8.0 jar包

    截止至2016-12-23,github上com.google.gson.Gson ...强大的json字符串解析功能及将字符串转换为json格式。才发现需要这么多分,大家也可以去网盘下载: https://pan.baidu.com/s/1d0JW_9G7iJPIJtjUbU91Jw 提取码: qtvm

    json2Map:多层json转换为Map再转换为单层json

    多层嵌套json转换为Map再转换为单层 最近在实习的时候,需要将多层嵌套的json转换为单层的json。并且把json进行格式化。... * 使用Gson拍平json字符串,即当有多层json嵌套时,可以把多层的json拍平为一层 * @par

    gson-2.8.0

    用于转换Java对象为 Json 字符串和把 Json 字符串转换为对象的工具, 它是 Google 开发的,性能比较强大。

    gson:一个Java序列化反序列化库,用于将Java对象转换为JSON并返回

    它还可以用于将JSON字符串转换为等效的Java对象。 Gson可以处理任意Java对象,包括您没有源代码的现有对象。 有一些开源项目可以将Java对象转换为JSON。 但是,大多数方法都要求您在类中放置Java批注。 如果您无法...

    Java序列化/反序列化库,用于将Java对象转换为JSON并返回-Android开发

    它也可以用于将JSON字符串转换为等效的Java对象。 Gson可以使用任意Java对象Gson Gson是一个Java库,可用于将Java对象转换为其JSON表示形式。 它也可以用于将JSON字符串转换为等效的Java对象。 Gson可以处理任意Java...

    gson-ext:GSON (google-gson) 的扩展。 启用轻量级 JSON 转换为 XML 和自动处理 ISO 8601 日期等功能

    这对于利用 XPATH 处理 JSON 字符串等任务非常方便。 因为 XML 比 JSON 更冗长,并且需要将元素包装在匹配的标签中,所以 gson-ext 在生成的 XML 中注入了一些标签,而 JSON 则没有。 主要有六种情况(忽略嵌套。...

    OkHttpLibrary:使用okhttp网络库和Gson进行Web服务调用

    OkHttpLibrary 使用okhttp网络库和Gson进行Web服务调用这里的Web服务... 序列化程序允许将Json字符串转换为相应的Java类型,而反序列化程序则允许从Java转换为JSON表示形式。 您还可以配置Gson以使用对象的自定义表示。

    android_external_gson

    它也可以用于将JSON字符串转换为等效的Java对象。 Gson可以处理任意Java对象,包括您没有源代码的预先存在的对象。 有一些开源项目可以将Java对象转换为JSON。 但是,大多数方法都要求您在类中放置Java批注。 如果...

    google-gson:从 https 分叉

    它还可用于将 JSON 字符串转换为等效的 Java 对象。 Gson 可以处理任意 Java 对象,包括您没有源代码的预先存在的对象。 嵌套 json 支持 您可以使用@NestedName注释来“展平”简单的嵌套 JSON 对象并将其映射到目标...

    数据库增删改查工具类

    支持字符串模糊查询,同时提供了JSON和Object对象之前相互转化的工具类,目前不支持集合类型转换,可以支持简单基本类型,Date类型。必须要求数据库和类的属性严格对应一致。当然你也可以采用google提供的GSon框架,...

    java版qq餐厅源码-Enroute_Eatery:Enroute_Eatery

    java版qq餐厅源码途中餐厅 ...字符串转换为等效的 Java 对象。 来源 Zomato API: Zomato API 提供全球 10,000 个城市超过 150 万家餐厅的详细信息。 来源 com.github.ittianyu:BottomNavigationViewEx

    java版qq餐厅源码-Enroute_Project:移动计算最终项目

    java版qq餐厅源码途中餐厅 ...字符串转换为等效的 Java 对象。 来源 Zomato API: Zomato API 提供全球 10,000 个城市超过 150 万家餐厅的详细信息。 来源 com.github.ittianyu:BottomNavigationViewEx

Global site tag (gtag.js) - Google Analytics