2012-10-23 2 views
25

Gson에서 직렬화 중에 사용자 정의 필드를 추가하는 간단한 방법을 찾을 수 없으며 다른 누군가가 도움을 줄 수 있기를 기대했습니다. 여기 Gson serialization 도중 필드 추가

내 문제를 보여주는 샘플 클래스입니다 :

public class A { 
    String id; 
    String name; 
    ... 
} 

I 클래스 AI 같은 것을 돌려 싶습니다 직렬화 할 때 :

url_to_user 클래스의 내 인스턴스 저장되지
{ "id":"123", "name":"John Doe", "url_to_user":"http://www.example.com/123" } 

A 클래스의 인스턴스에서 데이터로 생성 할 수 있습니다.

이 작업을 수행하는 간단한 방법이 있습니까? 하나의 필드를 추가하기 위해 전체 serializer를 작성하는 것을 피하는 것이 좋습니다.

답변

44

Gson.toJsonTree을 사용하면 JsonElement이되며 동적으로 상호 작용할 수 있습니다.

A a = getYourAInstanceHere(); 
Gson gson = new Gson(); 
JsonElement jsonElement = gson.toJsonTree(a); 
jsonElement.getAsJsonObject().addProperty("url_to_user", url); 
return gson.toJson(jsonElement); 
+0

감사합니다. 충분히 간단하고 내가하고있는 일을합니다. – joncalhoun

+0

간단한 ... 간단한 방법이 있기를 바랍니다. 객체에 대한 메소드 ... – Armand