json的转换插件是通过java的一些工具,直接将java对象或集合转换成json字符串。

常用的json转换工具有如下几种:

1)jsonlib

2)Gson:google

3)fastjson:阿里巴巴

------GSON操作简单,只需要一个jar包----------

aaarticlea/png;base64,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" alt="" />

User.java

 package bean;

 public class User {

     private String id;
private String name;
private int age;
private String address;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public User(String id, String name, int age, String address) {
super();
this.id = id;
this.name = name;
this.age = age;
this.address = address;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", age=" + age + ", address=" + address + "]";
} }

1.测试Java对象转JSON(测试结果在后面注释)

操作简单,无论转单个对象还是集合,都是gson.toJson(obj);

 package TestJson;

 import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; import javax.xml.bind.UnmarshallerHandler; import org.junit.Test; import com.google.gson.Gson; import bean.User; public class Bean2JSON { // 测试单个对象转JSON
@Test
public void test1(){
User user = new User("1", "QIAOZHI",25,"山西太原");
Gson gson = new Gson();
String json = gson.toJson(user);
System.out.println(json); //{"id":"1","name":"QIAOZHI","age":25,"address":"山西太原"}
} // 测试list转JSON
@Test
public void test2(){
List<User> list = new ArrayList<User>();
list.add(new User("1", "QIAOZHI",25,"山西太原"));
list.add(new User("2", "QIAOZHI",25,"山西太原"));
list.add(new User("3", "QIAOZHI",25,"山西太原"));
Gson gson = new Gson();
String json = gson.toJson(list);
System.out.println(json);
// [{"id":"1","name":"QIAOZHI","age":25,"address":"山西太原"},{"id":"2","name":"QIAOZHI","age":25,"address":"山西太原"},{"id":"3","name":"QIAOZHI","age":25,"address":"山西太原"}]
} // 测试map对象转JSON
@Test
public void test3(){
Map<String,User> map = new HashMap<String,User>();
map.put("1", new User("1", "QIAOZHI",25,"山西太原"));
map.put("2", new User("2", "QIAOZHI",25,"山西太原"));
map.put("3", new User("3", "QIAOZHI",25,"山西太原"));
Gson gson = new Gson();
String json = gson.toJson(map);
System.out.println(json);
// {"3":{"id":"3","name":"QIAOZHI","age":25,"address":"山西太原"},"2":{"id":"2","name":"QIAOZHI","age":25,"address":"山西太原"},"1":{"id":"1","name":"QIAOZHI","age":25,"address":"山西太原"}}
} // 测试list<map>对象转JSON
@Test
public void test4(){
List<Map<String,User>> list = new ArrayList<>();
Map<String,User> map1 = new HashMap<String,User>();
Map<String,User> map2 = new HashMap<String,User>();
map1.put("map11", new User("1", "QIAOZHI",25,"山西太原"));
map1.put("map12", new User("2", "QIAOZHI",25,"山西太原"));
map2.put("21", new User("11", "QIAOZHI",25,"山西太原"));
map2.put("22", new User("21", "QIAOZHI",25,"山西太原"));
list.add(map1);
list.add(map2);
Gson gson = new Gson();
String json = gson.toJson(list);
System.out.println(json);
// [{"map12":{"id":"2","name":"QIAOZHI","age":25,"address":"山西太原"},"map11":{"id":"1","name":"QIAOZHI","age":25,"address":"山西太原"}},{"21":{"id":"11","name":"QIAOZHI","age":25,"address":"山西太原"},"22":{"id":"21","name":"QIAOZHI","age":25,"address":"山西太原"}}]
} }

2.测试Json转Java对象与集合(测试结果在后面注释)

package TestJson_GSON;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; import org.junit.Test; import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken; public class JSON2Bean {
// 测试json转单个对象
@Test
public void test1(){
String json = "{'id':'1','name':'QIAOZHI','age':25,'address':'山西太原'}";
Gson gson = new Gson();
User user = gson.fromJson(json, User.class);
System.out.println(user);
// User [id=1, name=QIAOZHI, age=25, address=山西太原]
} // 测试JSON转list
@SuppressWarnings("unchecked")
@Test
public void test2(){
String json = "[{'id':'1','name':'QIAOZHI','age':25,'address':'山西太原'},{'id':'2','name':'QIAOZHI','age':25,'address':'山西太原'},{'id':'3','name':'QIAOZHI','age':25,'address':'山西太原'}]";
List<User> list = new ArrayList<User>();
Gson gson = new Gson();
list = (List<User>) gson.fromJson(json, new TypeToken<List<User>>(){}.getType());
System.out.println(list);
for(User user:list){
System.out.println(user);
}
// [{id=1, name=QIAOZHI, age=25.0, address=山西太原}, {id=2, name=QIAOZHI, age=25.0, address=山西太原}, {id=3, name=QIAOZHI, age=25.0, address=山西太原}]
System.out.println(list.get(1));
// {id=2, name=QIAOZHI, age=25.0, address=山西太原}
} // 测试JSON转Map
@Test
public void test3(){
String json = "{'3':{'id':'3','name':'QIAOZHI','age':25,'address':'山西太原'},'2':{'id':'2','name':'QIAOZHI','age':25,'address':'山西太原'},'1':{'id':'1','name':'QIAOZHI','age':25,'address':'山西太原'}}";
Map<String,User> map = new HashMap<String,User>();
Gson gson = new Gson();
map = (Map<String,User>) gson.fromJson(json, new TypeToken<Map<String,User>>(){}.getType());
System.out.println(map);
// {3={id=3, name=QIAOZHI, age=25.0, address=山西太原}, 2={id=2, name=QIAOZHI, age=25.0, address=山西太原}, 1={id=1, name=QIAOZHI, age=25.0, address=山西太原}}
User user = map.get("1");
System.out.println(user);
// {id=1, name=QIAOZHI, age=25.0, address=山西太原}
} // 测试JSON转list<map>对象
@SuppressWarnings("unchecked")
@Test
public void test4(){
String json = "[{'map12':{'id':'2','name':'QIAOZHI','age':25,'address':'山西太原'},'map11':{'id':'1','name':'QIAOZHI','age':25,'address':'山西太原'}},{'21':{'id':'11','name':'QIAOZHI','age':25,'address':'山西太原'},'22':{'id':'21','name':'QIAOZHI','age':25,'address':'山西太原'}}]";
List<Map<String,User>> list = new ArrayList<>();
Gson gson = new Gson();
list = gson.fromJson(json, new TypeToken<List<Map<String,User>>>(){}.getType());
System.out.println(list);
// [{map12={id=2, name=QIAOZHI, age=25.0, address=山西太原}, map11={id=1, name=QIAOZHI, age=25.0, address=山西太原}}, {21={id=11, name=QIAOZHI, age=25.0, address=山西太原}, 22={id=21, name=QIAOZHI, age=25.0, address=山西太原}}]
System.out.println(list.get(1));
// {21={id=11, name=QIAOZHI, age=25.0, address=山西太原}, 22={id=21, name=QIAOZHI, age=25.0, address=山西太原}}
}
}

注意:

json转普通的Javabean只需要两个简单的参数,第一个是json字符串,第二个是需要转换对象的类型。

User user = gson.fromJson(json, User.class);

json转集合与map类型需要使用了TypeToken,它是gson提供的数据类型转换器,可以支持各种数据集合类型转换。也就是通知GSON将json转为那种集合

list = (List<User>) gson.fromJson(json, new TypeToken<List<User>>(){}.getType());

map = (Map<String,User>) gson.fromJson(json, new TypeToken<Map<String,User>>(){}.getType());

list = gson.fromJson(json, new TypeToken<List<Map<String,User>>>(){}.getType());

GSON中Java对象与JSON互相转换——(一)的更多相关文章

  1. Java对象与JSON互相转换jsonlib以及手动创建JSON对象与数组——(二)

    首先声明一下,jsonlib转换与GSON相比太差劲了,操作不是一般的繁琐.GSON可以直接转换成各种集合与对象类型.强烈推荐使用GSON.而且GSON一个方法就可以解决,jsonlib转来转去太繁琐 ...

  2. Json:Java对象和Json文本转换工具类

    Json 是一个用于 Java 对象 和 Json 文本 相互转换的工具类. 安装 下载源码 git clone https://github.com/njdi/durian.git 编译源码 cd ...

  3. json相关类库,java对象与json相互转换

    有效选择七个关于Java的JSON开源类库 转自:http://www.open-open.com/lib/view/open1397870197828.html 翻译: (英语原文:http://w ...

  4. java对象与json串互转

    1:java对象与json串转换: java对象—json串: JSONObject JSONStr = JSONObject.fromObject(object); String str = JSO ...

  5. FastJson、Jackson、Gson进行Java对象转换Json细节处理

    前言 Java对象在转json的时候,如果对象里面有属性值为null的话,那么在json序列化的时候要不要序列出来呢?对比以下json转换方式 一.fastJson 1.fastJson在转换java ...

  6. FastJson、Jackson、Gson进行Java对象转换Json的细节处理

    前言 Java对象在转json的时候,如果对象里面有属性值为null的话,那么在json序列化的时候要不要序列出来呢?对比以下json转换方式 一.fastJson 1.fastJson在转换java ...

  7. Java对象、Json、Xml转换工具Jackson使用

    在Java项目中將一个对象转换成一段Json格式的字符串是非常常见的,能够实现这种需求的工具包也比较多,例如Gson.JSON-lib.Jackson等等.本文主要介绍Jackson的使用,Jacks ...

  8. Java基础97 json插件的使用(java对象和json字符串对象之间的转换)

    1.需要用到的包 2.实例 实体类 people package com.shore.entity; /** * @author DSHORE/2019-4-19 * */ public class ...

  9. Java对象与Json字符串的转换

    Java对象与Json字符串的转换 JSON是一种轻量级的数据交换格式,常用于前后端的数据交流 后端 : 前端 Java对象 > JsonString Java对象 < jsonStrin ...

随机推荐

  1. poj1850-CODE-组合

    求出给定序列的序号.有一个定理需要知道 具体看这篇博客吧http://blog.csdn.net/lyy289065406/article/details/6648492 #include <c ...

  2. MT【234】正方形染色(二)

    有$n$个正方形排成一行,今用红,白,黑三种颜色给这$n$个正方形染色,每个正方形只能染一种颜色.如果要求染这三种颜色的正方形都是偶数个,问有多少种不同的染色方法. 解答: 设有$a_n$种不同的染法 ...

  3. 06 Zabbix分布式监控和主被动模式

    06 Zabbix分布式监控和主被动模式 zabbix proxy设置 使用zabbix代理的好处 监控拥有不可靠的远程区域 当监控项目数以万计的时候使用代理分担zabbix-proxy压力 简化分布 ...

  4. 【BZOJ4712】洪水(动态dp)

    [BZOJ4712]洪水(动态dp) 题面 BZOJ 然而是权限题QwQ,所以粘过来算了. Description 小A走到一个山脚下,准备给自己造一个小屋.这时候,小A的朋友(op,又叫管理员)打开 ...

  5. 【BZOJ1826】[JSOI2010]缓存交换(贪心)

    [BZOJ1826][JSOI2010]缓存交换(贪心) 题面 BZOJ 洛谷 题解 当缓存不满显然直接放进去,满了之后考虑拿走哪一个.不难发现拿走下一次出现时间最晚的那个一定不会更差. 那么用一个堆 ...

  6. 洛谷 P1381 单词背诵 解题报告

    P1381 单词背诵 题目描述 灵梦有\(n\)个单词想要背,但她想通过一篇文章中的一段来记住这些单词. 文章由\(m\)个单词构成,她想在文章中找出连续的一段,其中包含最多的她想要背的单词(重复的只 ...

  7. python 线程,进程28原则

    基于函数实现 from threading import Thread def fun(data, *args, **kwargs): """ :param data: ...

  8. nginx 深入篇

    nginx 防盗链 上文介绍了如何以最最简单的方式配置静态资源,还存在一定的隐患,一般的盗链如何预防, 设置验证referer server { listen 8000; server_name 12 ...

  9. Gym 100971J-Robots at Warehouse

    题目链接:http://codeforces.com/gym/100971/problem/J Vitaly works at the warehouse. The warehouse can be ...

  10. Python文件和异常

    程序和运行时数据是在内存中驻留的,涉及到数据交换的地方,通常是磁盘.网络等,因此需要IO接口. IO编程中,Stream(流)是一个很重要的概念,可以把流想象成一个水管,数据就是水管里的水,但是只能单 ...