Nutz.Json转为Java对象(有Pojo类对应(复杂自定义以下内容还是看)
时间:2020-01-09
本文章向大家介绍Nutz.Json转为Java对象(有Pojo类对应(复杂自定义以下内容还是看),主要包括Nutz.Json转为Java对象(有Pojo类对应(复杂自定义以下内容还是看)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Json字符串转Java对象, 分成几种情况
从目标对象的类型看:
从目标对象的类型看:
- 无Pojo类对应
Json.fromJson(source/*来源参数*/)
- 有Pojo类对应
Json.fromJson(Class<T> klass, source/*来源参数*/)
Json.fromJson(Type t, source/*来源参数*/)
- Pojo集合或Map嵌套
Json.fromJsonAsArray(Class<T> klass, source/*来源参数*/)
Json.fromJsonAsList(Class<T> klass, source/*来源参数*/)
Json.fromJsonAsMap(Class<T> klass, source/*来源参数*/)
从来源看:
- 字符串
Json.fromJson(CharSequence c)
Json.fromJson(Class<T> klass, CharSequence c)
- Reader
Json.fromJson(Reader c)
Json.fromJson(Class<T> klass, Reader reader)
- File
Json.fromJsonFile(Class<T> klass, File f)
1、无pojo类对应
@Test public void jsonTest3(){ String jsonStr="{'name':'杜杰','age':28,'sex':'女'}"; Object obj=Json.fromJson(jsonStr); System.out.println(obj.toString()); //{name=杜杰, age=28, sex=女} }
2、有Pojo类对应(简单)
@Test public void jsonTest4(){ String jsonStr="{'id':20,'name':'周益涛','sal':10000.0,'age':18}"; Person person=Json.fromJson(Person.class,jsonStr); System.out.println(person.toString()); //Person [id=20, name=周益涛, age=18, sal=10000.0] }
@Test public void jsonTest4(){ //InputStream in=this.getClass().getResourceAsStream("person.json"); Person person=Json.fromJsonFile(Person.class,new File("person.json")); System.out.println(person.toString()); } //Person [id=2020, name=周益涛, age=18, sal=20000.0]
pet = Json.fromJson(Pet.class, reader);
有Pojo类对应(复杂自定义)
有Pojo类对应(复杂自定义)
fromJson方法中最复杂最灵活的方法群
String str = "[{dongdong:{age:80}}]";
List<Map<String, Pet>> list = (List<Map<String, Pet>>)Json.fromJson(NutType.list(NutType.mapStr(Pet.class)), str/*其他源也可以*/);
assertEquals(80, list.get(0).get("dongdong").getAge());// Junit断言一下,肯定是80啦
Pojo集合或Map嵌套
这群方法事实上就是 有Pojo类对应(复杂自定义) 中的简写形式
String str = "{dongdong:{age:80}}";
Map<String, Pet> pets = Json.fromJsonAsMap(Pet.class, str/*其他源也可以*/);
assertEquals(80, pets.get("dongdong").getAge());// Junit断言一下,肯定是80啦
一通百通,哈哈,仔细琢磨一下吧
复杂泛型
String str = "{abc:{def:{age:1}}}";
Map<String, Map<String, Record>> map;
// 1.r.59及之前版本的做法
NutType t = NutType.mapStr(NutType.mapStr(Record.class));
map = (Map<String, Map<String, Record>>) Json.fromJson(type, str);
// 1.r.60可以这样写. 通构建一个PType的匿名内部类实现
map = Json.fromJson(new PType<Map<String, Map<String, Record>>>(){}, str);
PType是NutType的子类,老版本可以直接拷贝其源码,实现类似的调用方法.
原文地址:https://www.cnblogs.com/zouhong/p/12171752.html
- BZOJ4805: 欧拉函数求和(杜教筛)
- centos7.x下搭建netcore环境和helloworld的demo
- ARM coretex M4 系统定时器
- 用实例说明如何用JavaScript生成XML
- 51nod 1244 莫比乌斯函数之和(杜教筛)
- 几个比较有意思的JS脚本
- Java多线程高并发学习笔记——阻塞队列
- 使用javascript+xml实现分页
- 使用OAuth打造webapi认证服务供自己的客户端使用
- 洛谷P3381 【模板】最小费用最大流(dijstra费用流)
- 使用OAuth打造webapi认证服务供自己的客户端使用(二)
- JavaScript基础1
- JavaScript实例-----反选
- 1303: [CQOI2009]中位数图
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- LeetCode | 20.有效的括号
- springboot开发之实现登录功能
- springboot开发之国际化(中英文切换)
- LeetCode | 225.用队列实现栈
- springboot开发之显示员工信息
- LeetCode | 232.用栈实现队列
- springboot开发之thymeleaf页面公共元素的抽取
- Redis | Redis 通用命令
- python爬虫--自动下载cosplay小姐姐图片(xpath使用自定义创建文件路径)
- springboot开发之修改员工
- LeetCode | 703.数据流中的第K大元素
- springboot开发之配置自定义的错误界面和错误信息
- springboot开发之删除员工
- LeetCode | 1.两数之和
- springboot开发之配置嵌入式Servlet容器两种方式