json - 有没有办法在 Grails 中使用 Marshaller 将 JSON 字符串解析为自定义对象
问题描述
我正在尝试将 JSON 字符串解析为我的自定义对象 我已经有一个 Marshaller 类从对象转到 JSON 并且想知道是否可以使用它来解析其他方向而不是使用 JsonSlurper 没有看到任何清除有关该或任何其他 JSON 到对象映射 api 的文档,不包括使用 JsonSlurper 编写代码来手动创建对象
解决方案
groovy 支持这样的简单映射:
import groovy.json.JsonSlurper
import groovy.json.JsonOutput
class A{
int id
String name
}
Map m = new JsonSlurper().parseText('{"id":123,"name":"Joe"}')
A a = m as A
assert a.id==123
assert a.name=="Joe"
def json = JsonOutput.toJson(a)
assert json == '{"id":123,"name":"Joe"}'
对于编组/解组方法,我更喜欢使用 Gson 库:
@Grab(group='com.google.code.gson', module='gson', version='2.8.5')
import com.google.gson.Gson
class A{
int id
String name
}
A a=new Gson().fromJson('{"id":123,"name":"Joe"}', A.class)
assert a.id==123
assert a.name=="Joe"
def json = new Gson().toJson(a)
assert json == '{"id":123,"name":"Joe"}'
推荐阅读
- html - Thymeleaf 表行划分为单独的页面
- angular - 如何使用 angular 中的 highcharts 创建如下图
- php - 如何避免 PHP 嵌套 if...else... 条件并编写干净、易于理解的代码?
- php - Magento 2:通过税获得产品价格/特价?
- sql - 在 SQL 中,如何按用户拥有的项目数对用户进行细分?(红移)
- javascript - 事件监听器点击不适用于 ejs 文件
- javascript - 如何使对象在记录时表现为单个许可值,但在分配给变量时充当对象意味着赋予其参考?
- events - 在本地发出 NestJS 事件(进程内 EventPattern 触发器)
- powershell - 将新用户添加到 SharePoint 对象时,集合大小固定错误
- node.js - Express 和 Handlebars:实现多个默认布局