16
votes

Jackson has the @JsonProperty("name") annotation, which can be applied to methods - the return value of the method will be assigned to the "name" parameter in the JSON.

I found out that Gson has the @SerializedName annotation, but that cannot be used with methods. Is there any way to get the @JsonProperty functionality for methods in Gson?

4

4 Answers

32
votes

Try

@SerializedName("serialized_fld_name")

7
votes

The solution in Gson is a similar annotation called @SerializedName that you can use to provide names that match the source JSON.

A simple example is shown below:

public class Message {
    @SerializedName("ID")
    private String id;
    @SerializedName("NFd")
    private int fileDescriptors;
}

Source

1
votes

No, there is not. As I recall, there is a post in the mailing list from a core developer that Gson won't likely be so enhanced, either.

1
votes

I had same problem with Gson and @SerializedName doesn't help in my case. So I used org.codehaus.jackson.map.ObjectMapper

ObjectMapper mapper = new ObjectMapper();
String responseJson = mapper.writeValueAsString(object);