2014-11-25 3 views
0

지도 (또는 목록)의지도를 JSON으로 직렬화하는 중에 문제가 발생했습니다. 그것은 어떤 수준까지도 가능합니다. GSON을 사용하여 맵을 JSON으로 변환하지만 원하는 출력을 얻지 못하고 있습니다. 아래의 예를 생각해자바에서 JSON으로 복잡한지도를 직렬화하는 방법

Map<String, String> map = new HashMap<String, String>(); 
map.put("key1", "value1"); 
map.put("key2", new ArrayList<String>(){{add("value2");add("value3");}}); 

나는이지도를 직렬화 때, 나는 다음과 같은 출력을 얻을 : 그것은 악화

{ 
"key1" : "value1", 
"key2" : "[value2, value3]" 
} 

내가지도 안에지도가있을 때. 내가 원하는 출력은 다음과 같습니다.

{ 
    "key1" : "value1", 
    "key2" : ["value2", "value3"] 
} 

그런 출력을 얻는 방법에 대해 알고 싶습니다. 이미 ObjectMapper와 GsonBuilder.registerTypeAdapter를 시도했지만 지금까지 성공하지 못했습니다.

미리 감사드립니다.

+0

'Map map = new HashMap <>(); map.put ("key1", "value1"); map.put ("key2", Arrays.asList ("value2", "value3"))); String json = new Gson(). toJson (map)'은 잘 동작합니다. –

답변

2

String이 필요한 HashMap에 ArrayList를 저장하는 것이 유효하지 않다고 생각합니다. 나는 그 코드가 실패해야한다고 말했을 것이다. 그러나 그것은 성공할 것임에 틀림 없다. 왜냐하면 그것은 당신을 위해 실패하지 않았기 때문이며, 그래서 나는 그것이 일어나고 있다고 가정한다. HashMap에 삽입하면 실제로 자바가 toString을 호출한다.)를 문자열 뒤에 던져 넣습니다. 따라서 HashMap에있는 값은 실제로 배열이 아닙니다. 그것이 삽입 된 순간부터의 문자열이었습니다. 따라서 손실로부터 다운 스트림으로 복구 할 수없는 정보를 잃게됩니다.

+0

선생님! 이 맵은 프로그램에서 동적으로 생성되었으며 어떤 시점에서 toString()이 맵에 목록을 넣는 동안 사용되었습니다. 그 toString()을 제거하고 코드가 잘 작동합니다! 멋진 답장을 보내 주셔서 감사합니다! – user3968762

+0

네, 내 맵은 이고 은 아닙니다. 나는 질문을 게시하는 동안 실수를했다. 변장의 축복은 내가 말해야한다. – user3968762

관련 문제