我有一个域类
class UserProfile {
List<String> interests = [];
ObjectId id;
String username;
String password;
String email;
static constraints = {
}
}
由gorm
正确保存在mongodb中def user = new UserProfile(username:"name",password:"pass",email:"asd@asd.com",interests: ['women','dogfight']);
user.save()
可以在mongo控制台中验证:
{“_ id”:ObjectId(“528fd78003646357efb421c0”),“email”:“asd@asd.com”,“interest”:[“women”,“dogfight”],“password”:“pass”,“ username“:”name“,”version“:0}
所以我得到了这个对象
在控制器中UserProfile.find() as JSON
并获得
{ “类”: “domain.users.UserProfile”, “ID”:{ “类”: “org.bson.types.ObjectId”, “公司”: - 273407552, “机器”:56910679,“新“:假,” 时间 “:1385158528000” timeSecond “:1385158528},” 电子邮件 “:” ASD \ u0040asd.com”, “密码”: “通”, “用户名”: “名称”}
因为你可以看到遗憾的是没有呈现的兴趣列表
我将不胜感激任何帮助。感谢名单。
P.S。 Grails v2.3.3
答案 0 :(得分:2)
域类中的集合对GORM来说是不自然的。使用SQL数据库时,你很难坚持这样一个实体。所以我相信,Grails中的转换器忽略了这些属性。
比你需要编写自己的marshaller,进行转换。关于Grails marshallers的答案在SO有很多,或者这是一篇很好的博客文章:
http://compiledammit.com/2012/08/16/custom-json-marshalling-in-grails-done-right/
答案 1 :(得分:1)
在域类中指定关联应该会有所帮助。
static hasMany = [interests: String]
答案 2 :(得分:0)
尝试以下方法:
import grails.converters.JSON
…
JSON.use('deep')
render someObject as JSON
找到