Dictionary LazyMap的模型

Dictionary LazyMap的模型,dictionary,groovy,deserialization,Dictionary,Groovy,Deserialization,如何转换/反序列化这些模型 public class AccessCredentials { String userName = '' String password = '' LoginOptions loginOptions = new LoginOptions() } public class LoginOptions { String partnerId = '' String applicationId = '' } 进入LazyMap,如:

如何转换/反序列化这些模型

public class AccessCredentials {
    String userName = ''
    String password = ''
    LoginOptions loginOptions = new LoginOptions()
}

public class LoginOptions {
    String partnerId = ''
    String applicationId = ''
}
进入LazyMap,如:

[ 
    userName : userName, 
    password : password,
    loginOptions : [
        partnerId : partnerId, 
        applicationId : applicationId
    ]
]
你可以用。例如


如果你想快速破解的话,你可以试试这样

def objectMapper(o) {
    o.class.declaredFields.findAll { !it.synthetic }.collectEntries {
      switch(o."$it.name".class.name) {
          case ~/^java\..*/:
          case ~/^javax\..*/:
          case ~/^com\.sun\..*/:
          case ~/^sun\..*/:
              return [(it.name):o."$it.name"]
          default:
              return [(it.name):objectMapper(o."$it.name")]
      }

    }
}

objectMapper(new AccessCredentials())

尽管快速破解的问题在于,你忘记了它们在稍后破解时很快,只剩下一个破解;-)

你试了什么?我看不出这种简单的转换有什么问题很好!没有外部库有什么简单的方法吗?@Opal我从不介意。在许多面向web的项目中,jackson很可能已经是一个过渡的dep了。
def objectMapper(o) {
    o.class.declaredFields.findAll { !it.synthetic }.collectEntries {
      switch(o."$it.name".class.name) {
          case ~/^java\..*/:
          case ~/^javax\..*/:
          case ~/^com\.sun\..*/:
          case ~/^sun\..*/:
              return [(it.name):o."$it.name"]
          default:
              return [(it.name):objectMapper(o."$it.name")]
      }

    }
}

objectMapper(new AccessCredentials())