Grails 2.5.5错误与';作为JSON';在具有equals方法的域类上

Grails 2.5.5错误与';作为JSON';在具有equals方法的域类上,grails,groovy,grails-domain-class,Grails,Groovy,Grails Domain Class,当我试图从springSecurityService获取当前登录用户并将其呈现为JSON时,我遇到了一个错误 def user = springSecurityService.getCurrentUser() println user as JSON // EXCEPTION! 用户是一个域类,并且有一个equals方法,下面的错误是因为“as JSON”似乎在调用equals方法(我不理解为什么) 用户看起来像这样: class User implements Serializable {

当我试图从springSecurityService获取当前登录用户并将其呈现为JSON时,我遇到了一个错误

def user = springSecurityService.getCurrentUser()
println user as JSON // EXCEPTION!
用户是一个域类,并且有一个equals方法,下面的错误是因为“as JSON”似乎在调用equals方法(我不理解为什么)

用户看起来像这样:

class User implements Serializable {
   ...
   String username
   String password
   String email
   ...

   @Override
   boolean equals(other)
   {
      is(other) || (other.instanceOf(User) && other.username == username)
   }
   ...
}
这是一个例外:(错误在.instanceOf(User)上)

有人在做同样的实验吗?
这是预期的行为还是一个bug?

尽量不要自己给出
equals()
实现,而是使用Groovy提供的注释。看看这是否有效

检查
instanceOf()
可用性,如下所示

(obj.respondsTo('instanceOf') && obj.instanceOf(User))

使用方法。

尽量不要自己给出
equals()
实现,而是使用Groovy提供的注释。看看这是否有效

检查
instanceOf()
可用性,如下所示

(obj.respondsTo('instanceOf') && obj.instanceOf(User))

使用方法。

试试这个,
println(用户为JSON)
另一个想法,来锁定罪犯;只需从
equals()
中返回false,然后在那里逐个添加属性。
getCurrentUser
方法是否返回null?如果用户不为null(例如,如果您尝试为其指定一个
new user()
),代码是否有效?@adeelasari问题在于“as JSON”调用的是equals,但作为参数传递的实例不是grails实例,这就是instanceOf方法不存在的原因(此处:other.instanceOf(user)),仅Grails域类存在@GregorPetrin getCurrentUser()有登录用户,因此它不是null,异常也不表示存在null问题,这是一个方法不存在错误。很奇怪。如果我将equals方法注释掉,错误就会消失;只需从
equals()
中返回false,然后在那里逐个添加属性。
getCurrentUser
方法是否返回null?如果用户不为null(例如,如果您尝试为其指定一个
new user()
),代码是否有效?@adeelasari问题在于“as JSON”调用的是equals,但作为参数传递的实例不是grails实例,这就是instanceOf方法不存在的原因(此处:other.instanceOf(user)),仅Grails域类存在@GregorPetrin getCurrentUser()有登录用户,因此它不是null,异常也不表示存在null问题,这是一个方法不存在错误。很奇怪。如果我将equals方法注释掉,错误就会消失。