2016-09-06 2 views
0

우리는 다소 이상한 JSON 페이로드가 직렬화 될 필요가 있지만 Java 및 Gson을 사용하여 수행하는 방법을 확신하지 못합니다.이름이없는 JSON 객체의 비 직렬화

{ 
    "Red": { 
      "Level 1": "Specify Action", 
      "Level 2": "Action Taken", 
      "Level 3": "No Action Taken" 
    }, 
    "Orange": { 
      "Level 4": "Defeat Gannon", 
      "Level 5": "Save Princess", 
      "Level 6": "Find Triforce" 
    } 
} 
우리는 개별 개체 (즉, "레드"와 "오렌지"), 그러나 우리는 부모 객체를 차지하려고하는 데있어 문제를 역 직렬화 할 수는 HashMap을 사용할 수 있습니다

하는 코드 쇼 등 쉽게 연결할 수있는 이름이 없습니다.

+0

변수 이름이 없으면 어떻게이 HashMap 함수에서이 페이로드를 전달할 것인가? – petryuno1

+0

죄송합니다, 명확하지 않았습니다. 나는 단지 "HashMap"을 사용하여 "Red"및 "Orange"객체를 나타낼 수 있다고 생각했지만, 부모 객체를 참조하는 방법을 모르기 때문에 전체 페이로드를 전달할 수는 없습니다. – killQuotes

+0

부모 개체 란 무엇을 의미합니까? –

답변

0

당신의 JSON은 다음과 같은 점을 고려 :

{ 
    "Red": { 
     "Level 1": "Specify Action", 
     "Level 2": "Action Taken", 
     "Level 3": "No Action Taken" 
    }, 
    "Orange": { 
     "Level 4": "Defeat Gannon", 
     "Level 5": "Save Princess", 
     "Level 6": "Find Triforce" 
    } 
} 

나는 HashMap의, 잭슨 API와 아래 같은 것을 사용합니다. 나는 유사한 GSON을 사용하여 수행 할 수 있다고 생각한다.

import com.fasterxml.jackson.core.type.TypeReference; 
import com.fasterxml.jackson.databind.ObjectMapper; 

     import java.io.IOException; 
     import java.util.HashMap; 
     import java.util.Map; 

     public class Test { 

      public static void main(String[] args) throws IOException { 

       ObjectMapper mapper = new ObjectMapper(); 
       String jsonInString = "{\n" + 
         " \"Red\": {\n" + 
         "  \"Level 1\": \"Specify Action\",\n" + 
         "  \"Level 2\": \"Action Taken\",\n" + 
         "  \"Level 3\": \"No Action Taken\"\n" + 
         " },\n" + 
         " \"Orange\": {\n" + 
         "  \"Level 4\": \"Defeat Gannon\",\n" + 
         "  \"Level 5\": \"Save Princess\",\n" + 
         "  \"Level 6\": \"Find Triforce\"\n" + 
         " }\n" + 
         "}"; 

       TypeReference< Map<String, HashMap<String, String>>> typeRef 
         = new TypeReference<Map<String, HashMap<String, String>>>() { 
       }; 

       Map<String, HashMap<String, String>> value = mapper.readValue(jsonInString, typeRef); 

       System.out.println(value); 

      } 
     } 
관련 문제