package com.bjpowernode.test;
import com.bjpowernode.domain.User;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.sun.deploy.security.ValidationState;
import org.junit.Test;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
public class TestGSONAPI {
/**
* 测试一个对象转JSON
*/
@Test
public void testOneObjectConvertToJSON(){
User user = new User(1,"zhangsan","123456","三丰大师",149) ;
Gson gson = new Gson();
//写法一
System.out.println("=======================写法一=========================");
String userJson = gson.toJson(user, User.class);
System.out.println("userJson = " + userJson);//userJson = {"id":1,"username":"zhangsan","password":"123456","nickname":"三丰大师","age":149}
//写法二
System.out.println("========================写法二=========================");
String userJson2 = gson.toJson(user);
System.out.println("userJson2 = " + userJson2);
}
/**
* 测试多个对象转JSON
*/
@Test
public void testManyObjectConvertToJSON(){
List<User> users = new ArrayList<>();
User user = null;
for (int i = 1; i <=5 ; i++) {
user = new User(i,"hhh"+i,123456+"i","哈哈哈"+i,24+i);
users.add(user);
}
Gson gson = new Gson();
String usersJson = gson.toJson(users);
System.out.println("usersJson = " + usersJson);
}
/**
* 测试JSON字符串转一个对象
*/
@Test
public void testJSONSConvertToOneObject(){
//如何将JSON字符串转换成对象
String jsonStr = "{\"id\":1,\"username\":\"zhangsan\",\"password\":\"123456\",\"nickname\":\"三丰大师\",\"age\":149}";
Gson gson = new Gson();
User user = gson.fromJson(jsonStr, User.class);
System.out.println("user = " + user);
}
/**
* 测试JSON字符串转多个对象(List)(错误案例)
*/
@Test
public void testJSONConvertManyObjectErrorInstance(){
String jsonStr = "[{\"id\":1,\"username\":\"hhh1\",\"password\":\"123456i\",\"nickname\":\"哈哈哈1\",\"age\":25},{\"id\":2,\"username\":\"hhh2\",\"password\":\"123456i\",\"nickname\":\"哈哈哈2\",\"age\":26},{\"id\":3,\"username\":\"hhh3\",\"password\":\"123456i\",\"nickname\":\"哈哈哈3\",\"age\":27},{\"id\":4,\"username\":\"hhh4\",\"password\":\"123456i\",\"nickname\":\"哈哈哈4\",\"age\":28},{\"id\":5,\"username\":\"hhh5\",\"password\":\"123456i\",\"nickname\":\"哈哈哈5\",\"age\":29}]\n";
Gson gson = new Gson();
ArrayList<User> arrayList = gson.fromJson(jsonStr, ArrayList.class);
/*上面这行代码,使得结果输出如下:
* {id=1.0, username=hhh1, password=123456i, nickname=哈哈哈1, age=25.0}
{id=2.0, username=hhh2, password=123456i, nickname=哈哈哈2, age=26.0}
{id=3.0, username=hhh3, password=123456i, nickname=哈哈哈3, age=27.0}
{id=4.0, username=hhh4, password=123456i, nickname=哈哈哈4, age=28.0}
{id=5.0, username=hhh5, password=123456i, nickname=哈哈哈5, age=29.0}
输出的结果,既不是对象,也不是JSON字符串
对象 :User(id=1, username=zhangsan, password=123456, nickname=三丰大师, age=149)
JSON字符串 : {"id":1,"username":"zhangsan","password":"123456","nickname":"三丰大师","age":149}
*/
// for (Object o : arrayList) {
// System.out.println(o);
// }
arrayList.forEach(System.out::println);
}
/**
* 测试JSON字符串转多个对象(List)(正确案例)
* 引入TypeToken
*/
@Test
public void testJSONConvertManyObjectCorrectInstance(){
String jsonStr = "[{\"id\":1,\"username\":\"hhh1\",\"password\":\"123456i\",\"nickname\":\"哈哈哈1\",\"age\":25},{\"id\":2,\"username\":\"hhh2\",\"password\":\"123456i\",\"nickname\":\"哈哈哈2\",\"age\":26},{\"id\":3,\"username\":\"hhh3\",\"password\":\"123456i\",\"nickname\":\"哈哈哈3\",\"age\":27},{\"id\":4,\"username\":\"hhh4\",\"password\":\"123456i\",\"nickname\":\"哈哈哈4\",\"age\":28},{\"id\":5,\"username\":\"hhh5\",\"password\":\"123456i\",\"nickname\":\"哈哈哈5\",\"age\":29}]\n";
Gson gson = new Gson();
Type type = new TypeToken<ArrayList<User>>(){}.getType();
ArrayList<User> arrayList = gson.fromJson(jsonStr, type);
// for (User user : arrayList) {
// System.out.println(user);
// }
arrayList.forEach(System.out::println);
/* 输出结果如下
* User(id=1, username=hhh1, password=123456i, nickname=哈哈哈1, age=25)
User(id=2, username=hhh2, password=123456i, nickname=哈哈哈2, age=26)
User(id=3, username=hhh3, password=123456i, nickname=哈哈哈3, age=27)
User(id=4, username=hhh4, password=123456i, nickname=哈哈哈4, age=28)
User(id=5, username=hhh5, password=123456i, nickname=哈哈哈5, age=29)
*
*/
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
GSON入门篇 一、创建一个JavaSE项目 二、IDEA中导入gson的jar包 三、创建JavaBean 四、测试类 4.1 一个对象转JSON 4.2 多个对象转JSON 4.3 JSON字符串转一个对象 4.4 JSON字符串转多个对象(List) 4.4.1 错误案例 4.4.2 正确案例 1、Java 解析 Json 最常用的类库有:google 的 Gson、阿里巴巴的 FastJson、以及 Jackson。这些都是非常优秀而且常用的库。 2、GSON 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库,可以快速的将一个 Json 字符转成一个 Java 对象,或者将一个 Java 对象转化为 Json 字符串。 3、gson 在 github 上开源地址:https://github.com/google/gson 二进制开发包下载:gson 二进制开发包下载地址:https://search.maven.org/artifact/com.google.code.gson/gson/2.8.5/jar gson-2.
资源推荐
资源详情
资源评论
收起资源包目录
GSON入门篇(教学视频+源代码).zip (19个子文件)
教学视频
2.idea中使用gson转换JSON数据 - 1.375.idea中使用gson转换JSON数据(Av470785552,P1).mp4 41.31MB
1.谷歌Gson的使用 - 1.374.谷歌Gson的使用(Av555872872,P1).mp4 41.89MB
源代码
GSON-bilibili
lib
junit-4.13.2.jar 376KB
hamcrest-core-1.3.jar 44KB
gson-2.8.5.jar 236KB
lombok.jar 1.88MB
GSON-bilibili.iml 815B
src
com
bjpowernode
test
TestGSONAPI.java 5KB
domain
User.java 449B
out
production
GSON-bilibili
generated
com
bjpowernode
test
TestGSONAPI.class 4KB
TestGSONAPI$1.class 663B
domain
User.class 3KB
.idea
libraries
hamcrest_core_1_3.xml 297B
lombok.xml 210B
workspace.xml 8KB
misc.xml 278B
compiler.xml 254B
modules.xml 273B
.gitignore 184B
共 19 条
- 1
资源评论
FBIHackerHarry浩
- 粉丝: 3w+
- 资源: 60
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功