有没有办法删除JSON转换器中的class字段?
示例:
import testproject.*
import grails.converters.*
emp = new Employee()
emp.lastName = "Bar"
emp as JSON 作为一个字符串,
{"class":"testproject.Employee","id":null,"lastName":"Bar"}我更喜欢
{"id":null,"lastName":"Bar"}有没有办法在最后再添加一行代码来删除class字段?
发布于 2012-09-24 13:12:40
还有一种方法可以做到这一点。我在域类中添加了下一段代码:
static {
grails.converters.JSON.registerObjectMarshaller(Employee) {
return it.properties.findAll {k,v -> k != 'class'}
}
}但是我发现,如果你使用了Groovy @ToString类注释,当你还必须添加' class‘来排除参数时,例如:
@ToString(includeNames = true, includeFields = true, excludes = "metaClass,class")发布于 2012-10-12 16:34:19
我更喜欢这样做:
def getAllBooks() {
def result = Book.getAllBooks().collect {
[
title: it.title,
author: it.author.firstname + " " + it.author.lastname,
pages: it.pageCount,
]
}
render(contentType: 'text/json', text: result as JSON)
}这将返回Book.getAllBoks()中的所有对象,但collect方法将全部更改为您指定的格式。
发布于 2011-06-28 00:09:37
一种替代方法是不使用构建器:
def myAction = {
def emp = new Employee()
emp.lastName = 'Bar'
render(contentType: 'text/json') {
id = emp.id
lastName = emp.lastName
}
}这有点不太正交,因为如果员工发生变化,您将需要更改渲染;另一方面,您可以更多地控制渲染的内容。
https://stackoverflow.com/questions/6495633
复制相似问题