【发布时间】:2016-06-01 05:59:42
【问题描述】:
我需要将配置值的 Map 转换为这样的字符串:
{"key" => "value", "key2" => "value2", ...}
有时一个值可能是配置值的另一个映射,因此对于该值,我需要类似递归回调到相同的转换过程,产生:
{... "key3" => {"subkey" => "subvalue", ...}, ...}
我来自 Java 背景,正在努力寻找正确的基于 Groovy/闭包的方法来执行此操作。到目前为止,这是我所拥有的:
static String toConfigString(Map config) {
return "{${config.collect {toConfigEntryString(it)}.join(', ')}}"
}
static String toConfigEntryString(entry) {
return "\"$entry.key\" => ${entry.value instanceof Map ? toConfigString(entry.value) : "\"$entry.value\""}"
}
由于第一个方法调用了第二个方法,而第二个方法转过来又回调到第一个方法,我不知道如何将其写成一个像样的闭包,我可以将其传递给初始收集调用...
【问题讨论】: