2015-07-02 2 views
1

Я хочу преобразовать мой POGO в json, но с ключами все строчные.Создать json из объекта с переименованными ключами

class Device { 
    MoreInfo moreInfo 

    ...some other fields... 
} 

class MoreInfo { 
    String thisIsCamelCase 
} 

При использовании new JsonBuilder(device).toPrettyString() ключи копируются из имени элемента (т.е. в случае верблюда). Однако я хочу, чтобы клавиши «moreInfo» и «thisIsCelelCase» были строчными. Есть ли опрятный способ достичь этого?

Решения, с которыми я столкнулся, включают использование JsonSlurper в конвертер на карту, а затем переименование ключей вручную (удаление объекта с карты и повторное добавление с новым именем) и преобразование обратно в 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]] 
Смежные вопросы