2017-11-06 2 views
0

에 JSON을 생성 ... 난 자바 아주 새로운 단지 JSON 시작입니다 독특한 의상 클래스

나는 다음과 같은 JSON 파일이 있습니다

"step1": { 
    "version": 1, 
    "items": { 
     "run": false, 
     "jump": true 
    } 
}, 
"step2": { 
    "version": "None", 
    "items": { 
     "happy": true, 
     "sad": false 
    } 
} 

내가 GSON을 사용하고 내 주요처럼을 이 :

Gson gs = new Gson(); 
Content tmp = gs.fromJson(<json string>, Content.class); 

내 수업 :

public class Content { 
    @SerializedName("step1") 
    private Step step1; 

    @SerializedName("step2") 
    private Step step2; 
} 

각 단계 클래스 :

public class Step{ 
    @SerializedName("version") 
    private String version; 

    @SerializedName("items") 
    ??????? 
} 

당신이 볼 수 있듯이 "?????" 부분은 내가 이해하려고하는 것입니다 - 어떻게 필드 이름을 알 필요없이 항목을 변환 할 수 있습니까? HashMap/다른 iterable 객체를 의미합니다.? 방법을 사용하여 초기화 할 수 있습니까 ..? 내가 생성자가있는 항목 클래스를 만드는 시도하지만이 경우에 그것을 사용하는 방법을 이해하지

..

+0

실제로 당신이 명시 적으로 .... @SerializedName를 직렬화 이름을 부여 할 필요가없는, 사용하기 매우 간단 GSON이다 ("항목") –

+0

그래서 무엇을 할 나는 대신 ...? 어떻게하면이 파일을이 클래스없이이 클래스로 변환 할 수 있습니까? – Dardar1991

답변

0

당신은 항목을 저장하는 Map<String, Boolean>를 사용할 수 있습니다.

public class Step { 
    private String version; 
    private Map<String, Boolean> items; 
} 

그런 다음 당신은지도에 값을 추가 할 수 있습니다 :

Step step = new Step(); 
    step.setVersion("None"); 

    Map<String, Boolean> items = new HashMap<>(); 
    items.put("happy", Boolean.TRUE); 
    items.put("sad", Boolean.FALSE); 
    step.setItems(items); 

희망 당신을 도와줍니다 당신은 Step 수업이 같은 될 수 있습니다.

0

나를 위해 일한 솔루션은 다음과 같습니다

public class Step{ 
    @SerializedName("version") 
    private String version; 

    @SerializedName("items") 
    private HashMap<String,Boolean> items; 
} 
관련 문제