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. C# 反射机制以及方法

    目录: 一. 反射的主要特性 1.反射中一个非常重要的类型就是 Type 1)当没有对象的时候使用这种方式来获取某个类型的Type 2)当已经获得对象后通过对象的GetType()方法来获取指定对象的 ...

  2. 23个Python爬虫开源项目代码,包含微信、淘宝、豆瓣、知乎、微博等

    今天为大家整理了23个Python爬虫项目.整理的原因是,爬虫入门简单快速,也非常适合新入门的小伙伴培养信心,所有链接指向GitHub,微信不能直接打开,老规矩,可以用电脑打开. 关注公众号「Pyth ...

  3. OpenAI 开源机器人模拟 Python 库,并行模拟处理速度提升400%

    10000da.cnvboyule.cnjiaeidaypt.cn  在过去一年的研究中,OpenAI团队开源一个使用 MuJoCoengine开发的用于机器人模拟的高性能Python库.雷锋网了解到 ...

  4. 自学Linux Shell16.4-在命令行上使用函数

    点击返回 自学Linux命令行与Shell脚本之路 16.4-在命令行上使用函数 脚本函数不仅可以用作shell脚本命令,也可以用作命令行界面的命令.一旦在shell中定义了函数,可以从系统的任意目录 ...

  5. 【GYM 102059】2018-2019 XIX Open Cup, Grand Prix of Korea

    vp了一场gym,我又开心地划水了. A. Coloring Roads 题意:给定一棵树,树边一开始都是无色的,每次操作可以把一个点到根的路径染成某个颜色,每次询问当前树上出现过某个次数的颜色种数. ...

  6. Python条件控制与循环语句

    1. 条件控制 # if-elif-else结构 age = 12 if age < 4: price = 0 elif age < 18: price = 5 else: price = ...

  7. C++ 虚函数表解析 继承

    C++ 虚函数表解析 陈皓 http://blog.csdn.net/haoel 前言 C++中的虚函数的作用主要是实现了多态的机制.关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父 ...

  8. 省选前的CF题

    RT,即将退役的人懒得一篇篇写题解,于是有了这个东西 CF1004E 树上选一条不超过k个点的链,最小化其余点到链上点的最大距离 这个思路很有意思,不像平时一般的树上问题,是从叶子开始一点点贪心合并直 ...

  9. 1063. Set Similarity

    Given two sets of integers, the similarity of the sets is defined to be Nc/Nt*100%, where Nc is the ...

  10. javascript面向对象精要第六章对象模式整理精要

    混入是一种给对象添加功能同时避免继承的强有力的方式,混入时将一个属性从一个对象 复制到另一个,从而使得接收者在不需要继承的情况下获得其功能.和继承不同,混入之后 对象无法检查属性来源.因此混入最适宜用 ...