使用重命名的键从对象生成json

时间:2015-07-02 14:29:41

标签: json groovy

我想将我的POGO转换为json,但键全部为小写。

class Device {
  MoreInfo moreInfo

  ...some other fields...
}

class MoreInfo {
  String thisIsCamelCase
}

当我使用new JsonBuilder(device).toPrettyString()时,会从成员名称复制密钥(即处于驼峰状态)。但是我希望“moreInfo”和“thisIsCamelCase”键都是小写的。有没有一种巧妙的方法来实现这一目标?

我遇到的解决方案包括使用JsonSlurper转换为地图,然后手动重命名键(从地图中删除obj,并使用新名称重新添加)并转换回Json。

是否有一些Groovy等价于@JsonProperty

1 个答案:

答案 0 :(得分:0)

以下脚本使所有地图键都小写:

import groovy.transform.Field

def m = [A:1, B:2, c:[D:2]]

@Field
def c = { k, v -> [(k.toLowerCase()):(v in Map)? v.collectEntries(c): v] }

assert m.collectEntries(c) == [a:1, b:2, c:[d:2]]