java - 我使用gson序列化java对象,并将LongSerializationPolicy设置为LongSerializationPolicy.STRING,但我无法理解结果

标签 java gson

我使用gson序列化java对象,并设置LongSerializationPolicy.STRING来序列化Long字段。像这样:

Gson gson = new GsonBuilder()
        .setLongSerializationPolicy(LongSerializationPolicy.STRING)
        .create();

Map<String, Long> resultMap = Maps.newHashMap();
resultMap.put("id", 123456789L);

JsonObject dataObj = new JsonObject();
dataObj,addProperty("id", 123456789L);

System.out.println(gson.toJson(resultMap));
System.out.println(gson.toJson(dataObj));

结果是:

{"id":"123456789"}
{"id":123456789}

为什么结果不一样?我期望的两个结果是 {"id":"123456789L"}

最佳答案

我相信那是因为JsonObject将您的值添加为 Map<String,JsonValue>JsonValue延伸Object ,因此当序列化您输入的值时,任何内容都将被解析为字符串。

关于java - 我使用gson序列化java对象,并将LongSerializationPolicy设置为LongSerializationPolicy.STRING,但我无法理解结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47629080/

相关文章:

java - 确定何时使用哪些 Android 组件?

java - 如何修复 java.lang.IllegalStateException : Expected BEGIN_ARRAY but was STRING in cmd windows Gson, Apache Spark

java - 不使用 pojo 、 bean 或 getter 和 setter 获取 Json 标题为 json 数组

java - 解析 JSON 对象时 Gson 解析错误

java - 有没有关于 dl4j 和 cuda 支持这个问题的解决方案?

java - 使用 JDBC 在 Mysql 中更新查询的问题

java - 西里尔字母验证

java - AES与Rijndael的关键时间表

java - 在不反序列化的情况下从 JSON 字符串中的任何位置删除键

java - 不改变顺序的 JSON pretty-print