我创建了一个返回一些json的小型Web服务,返回的json值如下所示:
[{"class":"simple.web.service.Stock","id":null,"name":"GOOG","price":123.45}, {"class":"simple.web.service.Stock","id":null,"name":"APPL","price":345.67}]
我的对象不包含 id 字段。它来自哪里?它应该如何填充?
另外,是否包含类字段标准?如果我不想包含该怎么办?
答案 0 :(得分:1)
id
属性默认情况下在域对象上创建,就像version
一样(除非您明确告诉它不要包含version
)。两者都在正常使用情况下自动设置和维护。如果需要,您可以控制如何创建/填充ID - 请参阅manual。
出于安全原因,默认情况下,JSON构造函数不会返回实际的id或版本。要包含它们或不包含其他项目,您可能需要创建自定义JSON marshallers。
您的Bootstrap中的此类内容仅包含name
和price
:
import grails.converters.JSON
class BootStrap {
def init = {servletContext ->
JSON.registerObjectMarshaller(Stock) {
def returnArray = [:]
returnArray['name'] = it.name
returnArray['price'] = it.price
return returnArray
}
}