java - 是否可以通过注释类的对象而不是注释字段来更改类的字段的 json 名称

标签 java json serialization gson

Gson gson = gsonBuilder.create();
String json = gson.toJson(obj);

该对象包含一对 .当它转换为 json 时,它的值显示为:

_first : 1.0 , _second : 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;
}

最佳答案

我使用自定义序列化器来解决这个问题:

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;
}

关于java - 是否可以通过注释类的对象而不是注释字段来更改类的字段的 json 名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58479770/

相关文章:

java - 在Android上使用网络套接字发送传感器的原始数据

java - 如何在java Rest API中使用GET方法调用传递json数据

php - 如何在php中生成json并在多个数组中嵌套一个数组(用于匹配值)

c# - JSON.NET 忽略我所有没有 JsonProperty 属性的属性

java - 使用 gcc 通过 javacode 编译 C 源代码

java - 使用撇号从java中的数据库查询字符串

php - PHP 中的元音编码错误

java - JSONObject 无法转换为 JSONArray、SimpleJSON

c++ - 使用 QSettings 保存 QSpinBox 和 QComboBox 的组合

java - 为什么 java.io.Serializable 在 Java 5 中没有被弃用?