字符串列表未呈现为JSON

时间:2013-11-22 22:23:27

标签: json grails gorm

我有一个域类

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

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

参考资料可在http://grails.org/Converters+Reference

找到