2017-07-25 11 views
2

は、私はJSON文字列として、次のオブジェクトを直列化していると言います。これはどうすればいいですか?Gson複数のフィールドにフィールドを変換

私は次のようにクラスになると端たい:

class RefinedPerson { 
    public final String firstName; 
    public final String lastName; 

    public String toString() { return String.format("%s %s", firstName, lastName); } 
} 

が可能なすべてのGsonとこのですか?

答えて

2

タイプにはJsonSerializerを登録してください(ご希望の場合はTypeAdapter)。

ような何か:

@JsonAdapter(PersonSerializer.class) 
class Person { 
    private final String name; 
    Person(final String name) { 
     // Some validation... 
     this.name = name; 
    } 

    String getName() { 
     return this.name; 
    } 
} 
あなたのシリアライザのようなものに見える

class PersonSerializer implements JsonSerializer<Person> { 
    @Override 
    public JsonObject serialise(final Person src, 
           final Type personType, 
           final JsonSerializationContext context) { 

     final JsonObject json = new JsonObject(); 
     final String[] names = src.getName().split(" "); 
     // Some validation... 

     json.addProperty("firstName", names[0]); 
     json.addProperty("lastName", names[1]); 
     return json; 
    } 
} 
関連する問題