Grails 将 JSON 解析为域类

Posted

技术标签:

【中文标题】Grails 将 JSON 解析为域类【英文标题】:Grails parse JSON into domain class 【发布时间】:2014-01-03 09:35:48 【问题描述】:

嗨,假设我有一个域类

class Book
static hasOne=[author:Author]
long id
String name



class Author 
static hasMany=[books:Book]
long id
String name

我有一个 json 对象发送进来。我可以只做一个new Book(Json) 而不手动设置属性吗?

【问题讨论】:

这样做会发生什么? 你可能需要使用 new Book(JSON.parse(params)) 来为 GORM 获取正确的格式 【参考方案1】:

使用内置的Grails JSON 转换器使这更容易

import grails.converters.JSON

class BookController 
   def save = 
      def book = new Book(JSON.parse(yourJson))
      book.save(flush:true)
   

在代码中发生了什么(我们正在解析 JSON 对象并在 Book 实体上设置属性并保存

【讨论】:

当涉及数据类型时我遇到了这个问题......因为在 JSON 中它们显示为例如“2020-11-11”,我在域类中解析为空 不错的答案,它会解析孩子并将它们放入实例中。【参考方案2】:

使用 JsonBinder:

def json = request.JSON;
def book= new Book();
JsonBinder.bindJSON(book, json);

别忘了导入这些包:

import grails.converters.JSON;
import com.ocom.grails.JsonBinder;

【讨论】:

以上是关于Grails 将 JSON 解析为域类的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Grails 域类映射到 DTO?

Grails - 使用 JSON 启动域类

Grails - 将 UUID 呈现为 JSON

Grails:将枚举类型的mysql字段映射到域类

我应该将瞬态域类放在 grails 应用程序中的啥位置?

使用 TEXT 字段将 Grails 域类映射到遗留数据库的问题