groovy/grails 프로젝트의 사용자 정의 JSON (de) 직렬화를 Jackson으로 바꾸려고합니다.Jackson을 사용하여 정렬 된 키가있는 직렬화 된 JSON
간단한 '자연스러운'알파벳 순서로 정렬 된 키가있는 예쁜 인쇄 JSON을 출력하는 데 문제가 있습니다. 이 시도 (많은 변화)했습니다
mymap = [ ... ] // Some groovy map
def mapper = new ObjectMapper()
mapper.configure(SerializationConfig.Feature.SORT_PROPERTIES_ALPHABETICALLY, true)
def jsonstring = mapper.defaultPrettyPrintingWriter().writeValueAsString(mymap)
그러나 잭슨은 고집 키가 임의의 순서로 보인다 JSON을 생성합니다. TreeMap을 사용하여 'mymap'유형을 변경해 보았습니다.이 경우 모든 키가 예상대로 올바르게 정렬됩니다.
위의없이 'mymap'을 TreeMap (및 재귀 적으로 모든 맵 값 ...)으로 변경하지 않고 키를 가져 오는 방법이 있다면 이 궁금합니다.
SORT_PROPERTIES_ALPHABETICALLY은 (는) 정확하게 수행하려고 의도 된 것 같지만 어떤 이유로 든 수행하지 않습니다. 그 이유를 아시겠습니까? 위의 무엇을 잘못하고 있습니까?
잭슨 1.8.3, 1.8.8 및 1.9.5와 동일한 결과 (임의 키)를 시도했습니다.
좋은 포인트를 사용할 수 있습니다. 직렬화 환경을 설정하는 좋은 방법을 잊어 버린 것처럼 보입니다. –
당신은 할 수 있어야합니다 :'def jsonstring = mapper.defaultPrettyPrintingWriter(). writeValueAsString (mymap as TreeMap)'안 그래? –
그게 도움이되지 않습니다. 'mymap'의 구현은 TreeMap이 아닙니다. 그리고 그것이 있었다면, 'mymap'의 다른 모든 맵 값도 TreeMap인지 확인해야합니다. 그리드 매핑이 매우 까다로워집니다. –