Grails 反序列化支持嵌入关联的JSON对象
是否有一种简单的方法可以将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
{
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中的数据,因此它不是为获取对象而设计的,因为在表单上这样做没有任何意义。