【Groovy】json 字符串反序列化 ( 使用 JsonSlurper 进行 json 字符串反序列化 | 根据 map 集合构造相关类 )

简介: 【Groovy】json 字符串反序列化 ( 使用 JsonSlurper 进行 json 字符串反序列化 | 根据 map 集合构造相关类 )

一、使用 JsonSlurper 进行 json 字符串反序列化


将如下 json 字符串


{"age":18,"name":"Tom"}


进行反序列化 ;



首先 , 创建 JsonSlurper 对象 ,


def jsonSlurper = new JsonSlurper()


然后 , 调用该 JsonSlurper 对象的 parse 方法 , 可以对不同类型的 json 数据进行反序列化 ;


可进行反序列化的 json 数据类型如下图所示 :

image.png



这里调用 jsonSlurper 对象的 parseText 方法 , 将 json 字符串进行反序列化操作 ;


// 将字符串进行 json 反序列化操作 , 得到 map 集合
def jsonObject = jsonSlurper.parseText('{"age":18,"name":"Tom"}');


打印反序列化结果 ,


// 打印反序列化结果
println jsonObject


执行结果如下 :


[age:18, name:Tom]

二、根据 map 集合构造相关类


在上面的章节将 json 字符串


{"age":18,"name":"Tom"}


进行反序列化 , 得到


[age:18, name:Tom]


map 集合 ;


该 map 集合可以直接赋值给相应类对象 , 该类的变量名就是 map 集合的 Key 键 ;


// 根据 map 集合的 Key 构造类
class Student {
    def name
    def age
}


直接将 map 集合赋值给构造的类对象 , 并打印该对象的成员变量值 ;


// 直接将 map 集合赋值给构造的类对象
Student student = jsonObject
// 打印类对象的成员变量值
println "${student.name} , ${student.age}"


执行结果为 :


Tom , 18

三、完整代码示例


完整代码示例 :


import groovy.json.JsonSlurper
// 将 {"age":18,"name":"Tom"} 字符串进行反序列化
def jsonSlurper = new JsonSlurper()
// 将字符串进行 json 反序列化操作 , 得到 map 集合
def jsonObject = jsonSlurper.parseText('{"age":18,"name":"Tom"}');
// 打印反序列化结果
println jsonObject
// 根据 map 集合的 Key 构造类
class Student {
    def name
    def age
}
// 直接将 map 集合赋值给构造的类对象
Student student = jsonObject
// 打印类对象的成员变量值
println "${student.name} , ${student.age}"


执行结果 :


[age:18, name:Tom]
Tom , 18

image.png

目录
相关文章
|
11天前
|
JSON 数据格式 索引
Python中序列化/反序列化JSON格式的数据
【11月更文挑战第4天】本文介绍了 Python 中使用 `json` 模块进行序列化和反序列化的操作。序列化是指将 Python 对象(如字典、列表)转换为 JSON 字符串,主要使用 `json.dumps` 方法。示例包括基本的字典和列表序列化,以及自定义类的序列化。反序列化则是将 JSON 字符串转换回 Python 对象,使用 `json.loads` 方法。文中还提供了具体的代码示例,展示了如何处理不同类型的 Python 对象。
|
24天前
|
存储 Java API
详细解析HashMap、TreeMap、LinkedHashMap等实现类,帮助您更好地理解和应用Java Map。
【10月更文挑战第19天】深入剖析Java Map:不仅是高效存储键值对的数据结构,更是展现设计艺术的典范。本文从基本概念、设计艺术和使用技巧三个方面,详细解析HashMap、TreeMap、LinkedHashMap等实现类,帮助您更好地理解和应用Java Map。
41 3
|
2月前
|
存储 Java
序列化流 ObjectInputStream 和 ObjectOutputStream 的基本使用【 File类+IO流知识回顾④】
这篇文章介绍了Java中ObjectInputStream和ObjectOutputStream类的基本使用,这两个类用于实现对象的序列化和反序列化。文章解释了序列化的概念、如何通过实现Serializable接口来实现序列化,以及如何使用transient关键字标记不需要序列化的属性。接着,通过示例代码演示了如何使用ObjectOutputStream进行对象的序列化和ObjectInputStream进行反序列化。
序列化流 ObjectInputStream 和 ObjectOutputStream 的基本使用【 File类+IO流知识回顾④】
|
1月前
|
JSON 数据格式
用来返回Json数据格式的工具--通用类
用来返回Json数据格式的工具--通用类
18 1
|
2月前
|
JSON 安全 编译器
扩展类实例的序列化和反序列化
扩展类实例的序列化和反序列化
35 0
|
3月前
|
Java
【Java集合类面试二十二】、Map和Set有什么区别?
该CSDN博客文章讨论了Map和Set的区别,但提供的内容摘要并未直接解释这两种集合类型的差异。通常,Map是一种键值对集合,提供通过键快速检索值的能力,而Set是一个不允许重复元素的集合。
|
3月前
|
JavaScript 前端开发
Vue 系类之 this.tabledatas.map 无效
这篇文章讲述了在Vue项目中使用`this.tabledatas.map`处理接口返回的数组数据时遇到的问题,原因是由于取错了后端返回的数据集合字段值,导致`.map`方法无效,通过检查和修正数据取值解决了问题。
Vue 系类之 this.tabledatas.map 无效
|
3月前
|
算法 Java 索引
【Java集合类面试四】、 描述一下Map put的过程
这篇文章详细描述了HashMap中put操作的过程,包括首次扩容、计算索引、插入数据以及链表转红黑树和可能的再次扩容。
【Java集合类面试四】、 描述一下Map put的过程
|
3月前
|
JSON 图形学 数据格式
Json☀️ 一、认识Json是如何解析成类的
Json☀️ 一、认识Json是如何解析成类的
|
3月前
|
安全 Java
【Java集合类面试五】、 如何得到一个线程安全的Map?
如何得到一个线程安全的Map的方法包括:使用Collections工具类将Map包装为线程安全,使用java.util.concurrent包下的ConcurrentHashMap,以及不推荐使用性能较差的Hashtable。