使用gson包操作JSON数据。

依赖包:gson-2.8.2.jar

<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.2</version>
</dependency>

代码如下:

 package json.gson;

 import java.util.ArrayList;
import java.util.List;
import java.util.Map; import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonParser;
import com.google.gson.reflect.TypeToken; /**
* 使用gson来操作Json
* 1.对象实体类,list,map,等转化成----->jsonString(进行数据传递)
* 2.jsonString转化成----->对象实体类,list,map(解析返回的数据)
* 3.我使用的是gson-2.2.2.jar
*
*/
public class JsonUtil { private static Gson gson = null; static {
if (gson == null) {
gson = new Gson();
}
} /**
* 将object对象转成json字符串(jsonString)
* boject 可以是List,也可以是Bean(对象类型)
*
* @param object
*/
public static String GsonString(Object object) {
String gsonString = null;
if (gson != null) {
gsonString = gson.toJson(object);
}
return gsonString;
} /**
* 入参是json对象
* 将gsonObjectString转成泛型bean(实体类)
*
* @param gsonString
*/
public static <T> T GsonToBean(String gsonString, Class<T> cls) {
T t = null;
if (gson != null) {
t = gson.fromJson(gsonString, cls);
}
return t;
} /**
* 这里的入参是json数组类型的字符串
* jsonArrayString转成list
*/
public static <T> List<T> jsonArrayToList(String json, Class<T> cls) {
Gson gson = new Gson();
List<T> list = new ArrayList<T>();
JsonArray array = new JsonParser().parse(json).getAsJsonArray();
for (final JsonElement elem : array) {
list.add(gson.fromJson(elem, cls));
}
return list;
} /**
* List对泛型没有要求
* jsonString转成list中有map的
*/
public static <T> List<Map<String, T>> GsonToListMap(String gsonString) {
List list = null;
if (gson != null) {
list = gson.fromJson(gsonString,
new TypeToken<List>() {
}.getType());
}
return list;
} /**
* 要求List中全部是Map
* jsonString转成list中有map的
*/
public static <T> List<Map<String, T>> GsonToListMaps(String gsonString) {
List<Map<String, T>> list = null;
if (gson != null) {
list = gson.fromJson(gsonString,
new TypeToken<List<Map<String, T>>>() {
}.getType());
}
return list;
} /**
* jsonString转成map的
*/
public static <T> Map<String, T> GsonToMaps(String gsonString) {
Map<String, T> map = null;
if (gson != null) {
map = gson.fromJson(gsonString, new TypeToken<Map<String, T>>() {
}.getType());
}
return map;
} /**
* map转jsonString,指定了Map类型
*/
public static String MapToJson(Map<String, Object> map) {
String str = null;
if (gson != null) {
str = gson.toJson(map);
}
return str;
} }

测试代码:

 package json.gson;

 import bean.User;

 public class TestGson {

     private static User user = null;

     static {
user = new User("tom", 25, "NO.1 street");
} public static void main(String[] args) {
String jsonStr = JsonUtil.GsonString(user);
System.out.println(jsonStr); String jsonStr2 = "{\"name\":\"tom\",\"age\":25,\"address\":\"NO.1 street\"}";
User user2 = JsonUtil.GsonToBean(jsonStr2, User.class);
System.out.println(user2);
}
}

运行结果:

{"name":"tom","age":25,"address":"NO.1 street"}
User[name='tom', age=25, address='NO.1 street']

Java之JSON操作(gson)的更多相关文章

  1. Java之JSON操作(Jackson)

    Java to JSON: package json.jackson; import bean.User; import com.fasterxml.jackson.databind.ObjectMa ...

  2. JSON和GSON操作json数据

    1,JSON操作json import net.sf.json.JSONArray; import net.sf.json.JSONObject; //json操作数据 public static S ...

  3. Java和js操作json

    Js中 Json字符串转json对象 //将json格式的字符串转为json对象 var t = JSON.parse('{"name":123}'); alert(t.name) ...

  4. Android JSON、GSON、FastJson的封装与解析

    声明: 1.本帖只提供代码,不深入讲解原理.如果读者想要深入了解,那就不要在这个帖子上浪费时间了 2.客户端用的是Google官方的Volley访问服务器,具体了解Volley请戳 这里 3.本帖三种 ...

  5. Java 的 JSON 开源类库选择比较(zz)

    在看了作者的介绍,然后我又到mvnrepository上去看了各个库的的使用数之后,发现只能在jackson和gson之间做选择. 以下是原文 有效选择七个关于Java的JSON开源类库 April  ...

  6. java中json数据生成和解析(复杂对象演示)

    1.json简单介绍 1.1 json是最流行和广泛通用的数据传输格式,简称JavaScript Object Notation,最早在JavaScript中使用. 1.2 举个例子,下面是一个jso ...

  7. Java之JSON数据

    特别注意:使用JSON前需要导包 操作步骤地址:http://blog.csdn.net/baidu_37107022/article/details/70876993 1.定义 JSON(JavaS ...

  8. JSON、GSON

    文章目录 什么是JSON 特点 JSON的数据结构 -- Object JSON的数据结构 -- Array JSON的数据结构 -- 基本类型 构建 JSON 数据 解析 JSON 数据 GSON ...

  9. 原生态的ajax 及json和gson学习资源

    @RequestMapping(value = "/{id}/view") @jsobody public String viewProject( @PathVariable(&q ...

随机推荐

  1. PAT A1121 Damn Single (25 分)——set遍历

    "Damn Single (单身狗)" is the Chinese nickname for someone who is being single. You are suppo ...

  2. python注册到eureka

    由于python提供的服务没有加入到注册中心,没有办法实现高可用现将python加入到注册中心实现高可用以下是基础样例,具体功能待完善 # coding:utf- import tornado.htt ...

  3. Python实现杨辉三角,超详细!

    巧妙实现杨辉三角代码 def triangles(): N=[1] #初始化为[1],杨辉三角的每一行为一个list while True: yield N #yield 实现记录功能,没有下一个ne ...

  4. cisco ospf

    ospf配置:(Open Shortest Path First)PC0 and PC1 via Ospf to communicate. Network map as below.Environme ...

  5. Android开发中代码下面出现波浪线问题

    在Android Studio中写代码时,经常会在一个英文单词的下面出现波浪线,这是因为系统检测到你的这个英文单词不符合规范,如下所示: 解决办法:选中这个单词,点击鼠标右键,点击:Spelling ...

  6. hibernate4使用原生jdbc进行批处理

    在hibernate中,有一级缓存session和二级缓存sessionFactory这些机制,一方面为编码提供了便利,同时也会有一些副作用.比如有较大的数据量交互的话,缓存反而会降低效率.最近在做一 ...

  7. Missing value auth-url required for auth plugin password

    在控制台输入openstack相关命令时提示如下: openstack user list Missing value auth-url required for auth plugin passwo ...

  8. CF662C Binary Table FWT

    传送门 \(N \leq 20\)很小诶 一个暴力的思路是枚举行的翻转状态然后在列上贪心 复杂度为\(O(2^NM)\)显然过不去 考虑到可能有若干列的初始状态是一样的,那么在任意反转之后他们贪心的策 ...

  9. Ionic2 App Import BrowserAnimationsModule or NoopAnimationsModule问题

    在开发app的过程中遇见了动画相关方面的问题,具体如下: 解决方法是:在app.module.ts模块中引入BrowserAnimationsModule import { BrowserAnimat ...

  10. 非关系型数据库(nosql)介绍

    非关系型数据库也叫Nosql数据库,全称是not noly sql. 2009年初,Johan Oskarsson举办了一场关于开源分布式数据库的讨论,Eric Evans在这次讨论中提出了NoSQL ...