Grails 反序列化支持嵌入关联的JSON对象

Grails 反序列化支持嵌入关联的JSON对象,grails,grails-2.0,grails-domain-class,grails-controller,Grails,Grails 2.0,Grails Domain Class,Grails Controller,是否有一种简单的方法可以将JSON字符串反序列化为支持嵌入式关联的域类;属于和有很多 { name: "Customer", contact: { name: "Contact" } } class Customer { name Contact contact } class Contact { String name static belongsTo = [customer:Customer] } 在我的控制器中,我想执行以下操作 def sav

是否有一种简单的方法可以将JSON字符串反序列化为支持嵌入式关联的域类;属于和有很多

{
  name: "Customer",
  contact: {
    name: "Contact"
  }
} 

class Customer {
  name 
  Contact contact
}

class Contact {
  String name
  static belongsTo = [customer:Customer]
}
在我的控制器中,我想执行以下操作

def save() {
   def customer = new Customer(request.JSON)
   customer.save();
}
现在我不得不这么做

def save() {
   def contact = new Contact(request.JSON.contact);
   def customer = new Customer(request.JSON);
   customer.contact = contact;
   customer.save();
}

你试过使用JsonSlurper吗

用法示例:

def slurper = new JsonSlurper()
def result = slurper.parseText('{"person":{"name":"Guillaume","age":33,"pets":["dog","cat"]}}')

assert result.person.name == "Guillaume"
assert result.person.age == 33
assert result.person.pets.size() == 2
assert result.person.pets[0] == "dog"
assert result.person.pets[1] == "cat"
参考:

你可以试试这个

    Test test
    def result = new JsonSlurper().parseTest('yourString')
    test = result

尝试一下这个方法会奏效。

grails.converters.json.default.deep被设置为true?因此,为了给您一个想法,您必须将其转换为:
{name:“Customer”,contact.name:“contact”}
grails.converters.json.default.deep根本没有设置,当我在配置中将其设置为true时,没有任何区别。groovy@JamesKleeh哎呀,如果这是真的,那就真的违反直觉了。在解析JSON时,应该在内部处理它。数据绑定是用于设置html表单中的数据,而不是JSON中的数据,因此它不是为获取对象而设计的,因为在表单上这样做没有任何意义。