使用Google的Gson实现对象和json字符串之间的转换
使用Google的Gson实现对象和json字符串之间的转换
需要gson.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字符串之间的转换的更多相关文章
- <摘录>Gson对Java嵌套对象和JSON字符串之间的转换
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,具有良好的跨平台特性.近几年来已经和XML一样成为C/S架构中广泛采用的数据格式.有关JSON的更多知识, ...
- json对象和json字符串之间的转换-JavaScript实现
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- Json对象和Json字符串之间的转换
json字符串转json对象,调用parse方法: var b='{"name":"2323","sex":"afasdf&quo ...
- JSON对象与JSON字符串之间的转换
JSON引用包:import net.sf.json 1.JSON字符串转JSON对象(例子中的AgencyExpand是java对象) JSONObject json = JSONObject.f ...
- node.js JS对象和JSON字符串之间的转换
JSON.stringify(obj)将JS对象转为字符串. var json = { aa: ['sdddssd'], bb: [ '892394829342394792399', '23894 ...
- 前端页面使用 Json对象与Json字符串之间的互相转换
前言 在前端页面很多时候都会用到Json这种格式的数据,最近没有前端,后端的我也要什么都要搞,对于Json对象与Json字符串之间的转换终于摸清楚了几种方式,归纳如下! 一:Json对象转换为json ...
- json对象和json字符串之间的转化
json对象和json字符串之间的转化 json字符串----->json对象 使用JSON.parse()函数 var jsonStr = '{"name":"z ...
- java对象与Json字符串之间的转化(fastjson)
1. 首先引入jar包 在pom.xml文件里加入下面依赖: <dependency> <groupId>com.alibaba</groupId> <art ...
- JS中实现JSON对象和JSON字符串之间的相互转换
对于主流的浏览器(比如:firefox,chrome,opera,safari,ie8+),浏览器自己提供了JSON对象,其中的parse和stringify方法实现了JSON对象和JSON字符串之间 ...
随机推荐
- 初尝微信小程序3-移动设备的分辨率与rpx
屏幕尺寸就是实际的物理尺寸. 分辨率(pt),是逻辑分辨率,pt的大小只和屏幕尺寸有关,简单可以理解为长度和视觉单位. 分辨率(px),是物理分辨率,单位是像素点,和屏幕尺寸没有关系. 微信开发者工具 ...
- java算法面试题:递归算法题2 第1个人10,第2个比第1个人大2岁,依次递推,请用递归方式计算出第8个人多大?
package com.swift; public class Digui_Return { public static void main(String[] args) { /* * 递归算法题2 ...
- java基础面试题:说说&和&&的区别
&与&&都是逻辑与 不同的是&左右两边的判断都要进行,而&&是短路与,当&&左边条件为假则不用再判断右边条件,所以效率更高 例如,对于i ...
- 关于微信小程序 textarea组件在fixed定位的模块中随页面移动问题
具体的情况: 在模拟器中没问题,可是在真机下就出现以下问题, <textarea />在一个view盒子中,view盒子是固定定位,页面滑动时候,固定定位的盒子会定在屏幕的相对位置,但 ...
- 20180911 关于页面加载顺序引发的JS的undefined/null错误
引用: 百度知道-HTML+JavaScript执行顺序问题 这是我在学习JS滚动播放图片案例意外遇到的一个问题,代码完成后console弹出错误警告: Uncaught TypeError: Can ...
- HH的项链题解(离线思想+链表+树状数组)
本人第一篇博客重磅推出!!! 希望各位朋友以后多多捧场也多给写意见(我个人喜欢把题解写得啰嗦一点,因为这样方便理解,各位巨佬勿喷) 来讲一道提高+/省选-的骚题:HH的项链(这个HH你理解成皇后呵呵哈 ...
- LOJ#6342. 跳一跳(期望)
题意 $n \leqslant 10^5$ Sol 随便推一推就好了吧.. $f[i] = \frac{f[i] + f[i +1] + \dots f[n]}{n - i + 1} + 1$ 移一下 ...
- C/C++程序基础 (四)字符串
字符串与数字转化 数字转换字符串:itoa, ltoa, ultoa ; gcvt, ecvt, fcvt 字符串转数字:atoi, atof(双精度浮点), atol:strtod(双精度浮点), ...
- Spring Boot 前世今生
Spring Boot 2.0 的推出又激起了一阵学习 Spring Boot 热,就单从我个人的博客的访问量大幅增加就可以感受到大家对学习 Spring Boot 的热情,那么在这么多人热衷于学习 ...
- 5-3 time模块
1.取当前时间戳和当前格式化时间 import time1 # 以时间戳的形式打印当前时间 1543849862 print(int(time.time()))#时间戳 # 取当前格式化好的时间 20 ...