groovy 打印json_groovy - Json序列化之JsonOutput

JsonOutput负责将groovy对象序列化为json字符串,跟JsonSlurper刚好相反。

JsonOutput类具有多态的静态json处理方法。每个方法的实现对应不同的参数类型。这些静态方法可以通过静态导入的方式导入后直接使用。

方法的执行结果为JSON格式的字符串。def json = JsonOutput.toJson([name: 'John Doe', age: 42])

assert json == '{"name":"John Doe","age":42}'

JsonOutput 不仅仅支持数据主类型,map,list等类型的JSON序列化d,甚至可以序列化POGOs,也就是普通的Groovy对象。class Person { String name }

def json = JsonOutput.toJson([ new Person(name: 'John'), new Person(name: 'Max') ])

assert json == '[{"name":"John"},{"name":"Max"}]'

上面的例子中,序列化的JSON字符串默认情况下没有对齐。所幸的是,JsonOutput提供了prettyPrint方法帮助我们序列化为更易阅读的JSON格式。def json = JsonOutput.toJson([name: 'John Doe', age: 42])

assert json == '{"name":"John Doe","age":42}'

assert JsonOutput.prettyPrint(json) == '''\

{

"name": "John Doe",

"age": 42

}'''.stripIndent()

prettyPrint方法接收字符串参数。该方法不能与其他JsonOutput方法一起使用,只能作用于任意的JSON格式字符串。

Groovy中还有一个方法可以创建JSON,那就是通过JsonBuilder类或者StreamingJsonBuilder类。这两个类都提供了DSL语法使得我们可以创建一个对象图,然后转换为JSON。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Groovy 中,你可以使用 `JsonSlurper` 类来反序列化 JSON 数据,包括数组。下面是一个示例,用于从 JSON 数据中反序列化一个字符串数组: ``` import groovy.json.JsonSlurper def json = '["apple", "banana", "cherry"]' def slurper = new JsonSlurper() def myArray = slurper.parseText(json) assert myArray instanceof List assert myArray.size() == 3 assert myArray[0] == "apple" assert myArray[1] == "banana" assert myArray[2] == "cherry" ``` 在上面的示例中,我们首先定义了一个包含字符串数组的 JSON 字符串。然后,我们创建了一个 `JsonSlurper` 对象,并使用其 `parseText` 方法将 JSON 字符串解析为 Groovy 中的对象。最后,我们检查了 `myArray` 对象是否是一个 `List` 类型的对象,并检查了数组中的元素是否正确。 如果 JSON 数据中包含的是对象数组,那么你可以将其反序列化为一个包含多个对象的列表,如下所示: ``` import groovy.json.JsonSlurper def json = '[{"name": "apple", "price": 1.0}, {"name": "banana", "price": 2.0}, {"name": "cherry", "price": 3.0}]' def slurper = new JsonSlurper() def myList = slurper.parseText(json) assert myList instanceof List assert myList.size() == 3 assert myList[0].name == "apple" assert myList[0].price == 1.0 assert myList[1].name == "banana" assert myList[1].price == 2.0 assert myList[2].name == "cherry" assert myList[2].price == 3.0 ``` 在上面的示例中,我们定义了一个包含对象数组的 JSON 字符串。我们使用 `JsonSlurper` 类的 `parseText` 方法将其反序列化为包含三个对象的列表。我们检查了 `myList` 对象是否是一个 `List` 类型的对象,并检查了每个对象的属性是否正确。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值