Можно ли изменить имя JSON полей класса, аннотируя объект класса вместо того, чтобы аннотировать поля - PullRequest
1 голос
/ 21 октября 2019
Gson gson = gsonBuilder.create();
String json = gson.toJson(obj);

Этот объект содержит пару. Когда он конвертируется в json, его значение отображается следующим образом:

_первый: 1.0, _секунд: 2.0

Я хочу сначала изменить имя переменной, а затем нанекоторая строка.

Могу ли я изменить имя поля с помощью аннотации на объекте, например

    class one {

    @SerializedName("number")
    int num ;

    @Some annotation to change the name of field one and field two
    Pair<Double,Double> var;

    Pair<String,Integer> var2;
    }

    class Pair<T1,T2>{

    T1 field_1;
    T2 field_2;
}

Ответы [ 2 ]

1 голос
/ 21 октября 2019

Я использовал собственный Сериализатор для решения этой проблемы:

gsonBuilder.registerTypeAdapter(Pair.class, new PairCustomSerializer());

public class PairCustomSerializer implements JsonSerializer<Pair<?, ?>> {

        @Override
        public JsonElement serialize(Pair<?, ?> src, Type typeOfSrc, JsonSerializationContext context) {
            JsonObject obj = new JsonObject();
            JsonArray arr = new JsonArray();
            if (src.getFirst() instanceof Double) {
                Double val1 = (Double) src.getFirst();
                Double val2 = (Double) src.getSecond();
                arr.add(val1);
                arr.add(val2);
                obj.add("value", arr);
                return obj;
}
0 голосов
/ 21 октября 2019

Кажется, что вы используете Gson в качестве парсера JSON и, согласно вашему описанию, вы можете просто использовать @SerializedName для переименования полей во втором классе при сериализации следующим образом:

class two {
    @SerializedName("new_filed_1")
    int field_1;
    @SerializedName("new_filed_2")
    int field_2;
}

Кстати, @JsonProperty используется для Jackson библиотеки, я рекомендую не смешивать их в своем коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...