Конвертировать hashmap в простой объект в Groovy - PullRequest
0 голосов
/ 13 мая 2019

У меня есть хэш-карта

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

Я хочу, чтобы это был простой объект, подобный этому

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

Как этого добиться? Любая помощь будет оценена.

1 Ответ

0 голосов
/ 19 мая 2019

В 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

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...