在Groovy中将哈希图转换为简单对象

时间:2019-05-13 14:56:55

标签: json dictionary object groovy hashmap

我有一个哈希图

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

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

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

如何实现?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

在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

希望这会有所帮助。