从具有重命名键的对象生成json

从具有重命名键的对象生成json,json,groovy,Json,Groovy,我想将POGO转换为json,但密钥都是小写的 class Device { MoreInfo moreInfo ...some other fields... } class MoreInfo { String thisIsCamelCase } 当我使用new JsonBuilder(device).toPrettyString()时,键是从成员名称复制的(即,以驼峰形式)。但是,我希望“moreInfo”和“thisIsCamelCase”键都是小写的。有没有一个简洁的方

我想将POGO转换为json,但密钥都是小写的

class Device {
  MoreInfo moreInfo

  ...some other fields...
}

class MoreInfo {
  String thisIsCamelCase
}
当我使用
new JsonBuilder(device).toPrettyString()
时,键是从成员名称复制的(即,以驼峰形式)。但是,我希望“moreInfo”和“thisIsCamelCase”键都是小写的。有没有一个简洁的方法来实现这一点

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


是否存在与
@JsonProperty
相当的Groovy?

以下脚本使所有映射键都小写:

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]]

以下脚本将所有贴图键设置为小写:

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]]

不,我认为您需要使用新键(如您所说)重建地图,或者使用带有
@JsonProperty
(如您所说)的Jackson(或类似内容)不,我认为您需要使用新键(如您所说)重建地图,或者使用带有
@JsonProperty
(如您所说)的Jackson(或类似内容)