2015-07-02 68 views
1

我想將我的POGO轉換爲json,但鍵全部爲小寫。從重新生成鍵的對象生成json

class Device { 
    MoreInfo moreInfo 

    ...some other fields... 
} 

class MoreInfo { 
    String thisIsCamelCase 
} 

當我使用new JsonBuilder(device).toPrettyString()所述密鑰是從所述構件的名稱被複制(即,是在駱駝情況)。不過,我希望「moreInfo」和「thisIsCamelCase」鍵都是小寫字母。有沒有一個簡單的方法來實現這一目標?

我遇到的解決方案包括使用JsonSlurper轉換爲地圖,然後手動重命名鍵(從地圖中刪除obj,並重新添加新名稱)並轉換回Json。

有一些Groovy等價物@JsonProperty

+3

不,我認爲你需要或者重建與新的鍵映射(如你所說),或使用'傑克遜(或類似)@ JsonProperty'(正如你所說) –

回答

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