如果我有一个简单的对象,如
class Person {
String name
Integer age
}
Run Code Online (Sandbox Code Playgroud)
我可以使用JSONBuilder轻松地将其用户定义的属性呈现为JSON
def person = new Person(name: 'bob', age: 22)
def builder = new JSONBuilder.build {
person.properties.each {propName, propValue ->
if (!['class', 'metaClass'].contains(propName)) {
// It seems "propName = propValue" doesn't work when propName is dynamic so we need to
// set the property on the builder using this syntax instead
setProperty(propName, propValue)
}
}
def json = builder.toString()
Run Code Online (Sandbox Code Playgroud)
当属性很简单时,这可以正常工作,即数字或字符串.但是对于更复杂的对象,例如
class ComplexPerson {
Name name
Integer age
Address address
}
class Name …Run Code Online (Sandbox Code Playgroud)