2013-09-03 2 views
3

Android 기기에서 GSON을 사용하고 있습니다.여러 유형의 객체에 대해 JSON 데이터를 비방 화합니다.

JSON 데이터가 들어 왔지만 몇 가지 다른 개체 형태로 나타날 수 있습니다.

이렇게 처리해야한다고 생각합니다.

public class Command 
{ 
    public String Command; 
} 


String json = {"Command":"Something", "date":"now"} 

String command = gson.fromJson(message, Command.class); 

그런 다음

Switch(command) 
{ 

case: something 
//deserialize to "something" object; 
break; 

case: other somthing 
//deserialize to "other somthing" object; 
break; 

case: object 3 
//deserialize to "object 3" object; 
break; 

} 

합니까 GSON가 가장 적합한 개체에 자동 매핑의 일종이 명령에 전환, 그래서 사용자 지정 개체 핸들러을 두 번 문자열을 deseraialize 필요 없다?

+0

그래서 여러 가지고 사용하여 빈으로 변환 같은 소스에서 오는 json 스키마? 그리고 당신은 그들을 적절한 콩에 던지려고하고 있습니까? –

+0

예. 쉽게이 작업을 수행 할 수있는 방법이 있습니까? 어쩌면 예제 또는 튜토리얼일까요? –

답변

1

내가

JsonParser parser = new JsonParser(); 
    JsonObject jsonObject = parser.parse(json).getAsJsonObject(); 

다음되는 스키마에 따라 각 JSON 스키마에 대한 독특하고 무언가를 찾아 사용하는 일반적인 된 JSONObject로 구문 분석은

gson.fromJson(jsonObject, AppropriateBean.class); 
+0

나는이 접근 방식을 사용하려고한다. 비록 내가 바라는만큼 정교하지는 않지만. –

+0

비 직렬화되어야하는 원시 데이터 유형이 아닌 객체를 처리 할 때 잠재적으로이 작업이 실패합니까? –

0

당신이 달성하고자하는 것의 example이 사용자 안내서에 포함되어 있다고 생각합니다. Serializing and Deserializing Collection with Objects of Arbitrary Types에 대한 부분을 참조하십시오. 기본 파서 API를 사용하고 나서 fromGson 메서드를 사용하는 것이 좋습니다. 중간 개체를 구문 분석 할 필요가 없으므로 나에게 좋은 접근 방법이라고 생각합니다. 그러나 또한 시도 할 수있는 두 가지 대안을 제공합니다.

관련 문제