使用Google的Gson实现对象和json字符串之间的转换
编程技术  /  houtizong 发布于 3年前   84
使用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字符串转换成javabeanPerson 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();} }
请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!
技术博客集 - 网站简介:
前后端技术:
后端基于Hyperf2.1框架开发,前端使用Bootstrap可视化布局系统生成
网站主要作用:
1.编程技术分享及讨论交流,内置聊天系统;
2.测试交流框架问题,比如:Hyperf、Laravel、TP、beego;
3.本站数据是基于大数据采集等爬虫技术为基础助力分享知识,如有侵权请发邮件到站长邮箱,站长会尽快处理;
4.站长邮箱:[email protected];
文章归档
文章标签
友情链接