如何用gson将对象转换为json

 我来答
就烦条0o
2016-07-19 · 知道合伙人软件行家
就烦条0o
知道合伙人软件行家
采纳数:33315 获赞数:46492
从事多年系统运维,喜欢编写各种小程序和脚本。

向TA提问 私信TA
展开全部
使用Google的Gson实现对象和json字符串之间的转换

需要gson-1.4.jar

1.JsonUtil.java

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

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

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();
}

}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式