首页 > 解决方案 > 在 Groovy 中将 hashmap 转换为简单对象

问题描述

我有一个哈希图

[enable_api_security:[BOOL:false], owner:[S:abcd], approvers:[L:[[S:abcd]]]}

我希望它是这样的简单对象

{enable_api_security: false, owner: abcd, approvers: abcd}

如何做到这一点?任何帮助,将不胜感激。

标签: jsondictionaryobjectgroovyhashmap

解决方案


在 groovy 中,您可以通过对象的 以编程方式向任何对象添加新属性metaClass

Object mapped = new Object()
mapped.metaClass."myNewProperty" = valueObj

然后,您可以像访问自定义对象中的任何其他属性一样访问此新属性:

assert mapped.myNewProperty.equals(valueObj) 

然后,使用这些功能,您可以在自定义对象中为给定的每个条目创建一个新属性Map(使用相应的值初始化),如下面的工作演示:

import java.time.LocalDateTime

Map properties = [enable_api_security: false, owner: 'Hello', time: LocalDateTime.now()]

Object enhanced = new Object()
properties.each { key, value -> 
    enhanced.metaClass."$key" = value
}

println enhanced.enable_api_security
println enhanced.owner
println enhanced.time

GitHub上的完整代码

希望这可以帮助。


推荐阅读