2013-10-12 81 views

回答

0

我不確定你可以用Gson做,但你可以用Genson。將@JsonIgnore(deseriaize = true)放在getPassword方法上。

或者,如果你想genson只使用領域而不是公共的getter/setter和領域,配置它這樣的:

Genson genson = new Genson.Builder() 
     .setUseGettersAndSetters(false) 
     .setFieldVisibility(VisibilityFilter.DEFAULT) 
     .create(); 

在這種情況下,把註釋在球場上。

0

您可以像往常一樣反序列化您的類(因爲您想要反序列化所有字段)並編寫排除密碼的custom serializer。事情是這樣的:

public class PersonSerializer implements JsonSerializer<Person> { 

    @Override 
    public JsonElement serialize(Person src, Type typeOfSrc, JsonSerializationContext context) 
    { 
    JsonObject obj = new JsonObject(); 
    obj.addProperty("name", src.name); 
    obj.addProperty("gender", src.gender); 
    obj.addProperty("age", src.age); 
    //And all the other fields but the password... 

    return obj; 
    } 
} 

然後你只需要註冊的串行:

GsonBuilder gson = new GsonBuilder(); 
gson.registerTypeAdapter(Person.class, new PersonSerializer()); 

最後序列化你的對象像往常一樣gson.toJson方法...

我不知道如果這是最好的方法,但它是非常簡單的...否則你可以看看Gson's excusion strategies ...