java对象和json数据转换实现方式2-使用gson实现

简介:

测试代码:


package com.yanek.util.json;

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

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonElement;
import com.google.gson.JsonParser;

public class GsonUtil {

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		Hotel h1=new Hotel();
		h1.setId(1);
		h1.setName("name1");
		
		Hotel h2=new Hotel();
		h2.setId(2);
		h2.setName("name2");
		
		RoomTypeVO t1=new RoomTypeVO();
		t1.setPrice("20");
		t1.setTypeid(1);
		t1.setTypename("nnn1");
		
		List<RoomTypeVO> RoomTypeVOs=new ArrayList<RoomTypeVO>();
		RoomTypeVOs.add(t1);
		RoomTypeVOs.add(t1);
		h1.setRoomTypeVOs(RoomTypeVOs);
		
		
		Hotel hotel=new Hotel();
		
		System.out.println("json1:::"+bean2Json(h1));
		
		String s=bean2Json(h1);
		hotel=json2Bean(s,Hotel.class);
		
		System.out.println("json2:::"+bean2Json(hotel));
		
		System.out.println("json3:::"+bean2Json(RoomTypeVOs));
		
		String s2=bean2Json(RoomTypeVOs);
		List<RoomTypeVO> RoomTypeVOs2=new ArrayList<RoomTypeVO>();
		RoomTypeVOs2=json2Bean(s2,List.class);
		
		System.out.println("json4:::"+bean2Json(RoomTypeVOs2));
		
		

	}
	
	
	    private static Gson gson = new GsonBuilder().create();
	    
	    public static String bean2Json(Object obj){
	        return gson.toJson(obj);
	    }
	    
	    public static <T> T json2Bean(String jsonStr,Class<T> objClass){
	        return gson.fromJson(jsonStr, objClass);
	    }
	    
	    public static String jsonFormatter(String uglyJsonStr){
	        Gson gson = new GsonBuilder().setPrettyPrinting().create();
	        JsonParser jp = new JsonParser();
	        JsonElement je = jp.parse(uglyJsonStr);
	        String prettyJsonString = gson.toJson(je);
	        return prettyJsonString;
	    }

}

输出如下:


json1:::{"RoomTypeVOs":[{"typeid":1,"typename":"nnn1","price":"20"},{"typeid":1,"typename":"nnn1","price":"20"}],"id":1,"name":"name1"}
json2:::{"RoomTypeVOs":[{"typeid":1,"typename":"nnn1","price":"20"},{"typeid":1,"typename":"nnn1","price":"20"}],"id":1,"name":"name1"}
json3:::[{"typeid":1,"typename":"nnn1","price":"20"},{"typeid":1,"typename":"nnn1","price":"20"}]
json4:::[{"typeid":1.0,"typename":"nnn1","price":"20"},{"typeid":1.0,"typename":"nnn1","price":"20"}]

相关实体类:

package com.yanek.util.json;



import java.util.List;

public class Hotel {

	public List<RoomTypeVO> getRoomTypeVOs() {
		return RoomTypeVOs;
	}
	public void setRoomTypeVOs(List<RoomTypeVO> roomTypeVOs) {
		RoomTypeVOs = roomTypeVOs;
	}
	private List<RoomTypeVO> RoomTypeVOs;
	

	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;
	}
	private int id;
	private String name;
	

}

package com.yanek.util.json;


public class RoomTypeVO {
	

	public int getTypeid() {
		return typeid;
	}
	public void setTypeid(int typeid) {
		this.typeid = typeid;
	}

	public String getTypename() {
		return typename;
	}
	public void setTypename(String typename) {
		this.typename = typename;
	}

	public String getPrice() {
		return price;
	}
	public void setPrice(String price) {
		this.price = price;
	}
	private int typeid;
	private String typename;
	private String price;

}



目录
相关文章
|
3天前
|
Java
深入JavaSE:详解Java对象的比较。
总的来说,Java对象的比较就像海洋生物的比较,有外在的,有内在的,有面对所有情况的,也有针对特殊情况的。理解并掌握这些比较方式,就能更好地驾驭Java的世界,游刃有余地操作Java对象。
25 12
|
1月前
|
编解码 JavaScript 前端开发
【Java进阶】详解JavaScript的BOM(浏览器对象模型)
总的来说,BOM提供了一种方式来与浏览器进行交互。通过BOM,你可以操作窗口、获取URL、操作历史、访问HTML文档、获取浏览器信息和屏幕信息等。虽然BOM并没有正式的标准,但大多数现代浏览器都实现了相似的功能,因此,你可以放心地在你的JavaScript代码中使用BOM。
73 23
|
1月前
|
Java 数据安全/隐私保护
Java 类和对象
本文介绍了Java编程中类和对象的基础知识,作为面向对象编程(OOP)的核心概念。类是对象的蓝图,定义实体类型;对象是具体实例,包含状态和行为。通过示例展示了如何创建表示汽车的类及其实例,并说明了构造函数、字段和方法的作用。同时,文章还探讨了访问修饰符的使用,强调封装的重要性,如通过getter和setter控制字段访问。最后总结了类与对象的关系及其在Java中的应用,并建议进一步学习继承等概念。
|
1月前
|
存储 缓存 Java
理解Java引用数据类型:它们都是对象引用
本文深入探讨了Java中引用数据类型的本质及其相关特性。引用变量存储的是对象的内存地址而非对象本身,类似房子的地址而非房子本身。文章通过实例解析了引用赋值、比较(`==`与`equals()`的区别)以及包装类缓存机制等核心概念。此外,还介绍了Java引用类型的家族,包括类、接口、数组和枚举。理解这些内容有助于开发者避免常见错误,提升对Java内存模型的掌握,为高效编程奠定基础。
79 0
|
1月前
|
Java
java中一个接口A,以及一个实现它的类B,一个A类型的引用对象作为一个方法的参数,这个参数的类型可以是B的类型吗?
本文探讨了面向对象编程中接口与实现类的关系,以及里氏替换原则(LSP)的应用。通过示例代码展示了如何利用多态性将实现类的对象传递给接口类型的参数,满足LSP的要求。LSP确保子类能无缝替换父类或接口,不改变程序行为。接口定义了行为规范,实现类遵循此规范,从而保证了多态性和代码的可维护性。总结来说,接口与实现类的关系天然符合LSP,体现了多态性的核心思想。
41 0
|
JSON Java Maven
在Java中,我们可以使用第三方库来解析JSON数据
在Java中,我们可以使用第三方库来解析JSON数据。这里以常用的Jackson库为例,演示如何解析JSON数据。
155 1
|
JSON Java Maven
|
9月前
|
JSON Java API
在 Java 中解析 JSON ArrayList 的详细指南
【8月更文挑战第23天】
210 1
|
SQL 数据采集 JSON
java解析json数据生成mysql省市区街道四级联动sql
这里为了省事直接用嵌套的for循环了,生成sql文件以后直接用sql工具运行即可,需要提前创建好数据库表。
712 0
|
JSON JavaScript 前端开发
除了闹过腥风血雨的fastjson,你还知道哪些Java解析JSON的利器?(1)
除了闹过腥风血雨的fastjson,你还知道哪些Java解析JSON的利器?
178 0
除了闹过腥风血雨的fastjson,你还知道哪些Java解析JSON的利器?(1)