我在我的一个java对象上有一个相当大的id。当它将其转换为JSON时,它会将其作为一个数字(例如{“id”:1000110040000000001})发送下来,但一旦它成为javascript对象,id就会更改为1000110040000000000。我在这里读到这个问题
当id较小时,它可以正常工作。我的第一个想法是强迫Jackson将所有数字转换成字符串,但我也愿意接受其他选择。如果可能的话,我宁愿不向java对象添加Jackson注释。
<代码>com。fasterxml。杰克逊。核心:jackson核心:2.5.4提供JsonGenerator。特色将\u NUMBERS\u作为\u字符串写入对象映射器配置。
final ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(JsonGenerator.Feature.WRITE_NUMBERS_AS_STRINGS, true);
Foo foo = new Foo(10);
System.out.println("Output: " + objectMapper.writeValueAsString(foo));
输出:{"a":"1"}
class Foo {
@XmlElement(name = "a")
Integer a
}
要包含依赖项,请执行以下操作:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.7.2</version>
</dependency>
Jackson databind(至少2.1.3)提供了特殊的ToString序列化器。这是为了我。
@Id @JsonSerialize(using = ToStringSerializer.class)
private Long id;
问题内容: 我能够将一个对象序列化为一个文件,然后再次还原它,如下面的代码片段所示。我想将对象序列化为字符串并存储到数据库中。谁能帮我? 问题答案: 你应该使用BLOB。使用JDBC非常简单。 你发布的第二个代码的问题是编码。你还应该对字节进行编码,以确保它们均不会失败。 如果你仍然想将其记录为字符串,则可以使用java.util.Base64对字节进行编码。 仍然应该将CLOB用作数据类型,因为
问题内容: 如何将上述字符串反序列化为java对象。 我正在使用的类是 问题答案: @基达 我假设您可以控制JSON输入字符串的创建方式。我认为JSON字符串格式不正确,无法对地图类型进行默认的GSON反序列化。 我已经修改了输入字符串供您考虑,这将导致非null的LocalLocationId 如果我对输入字符串的假设不正确,请发表评论。 编辑1:由于无法修改输入,请考虑编写自定义解串器。以下是
我尝试从一个用于存储Spring会话的Redis服务器反序列化String到Java对象,并且我想在Spring框架之外反序列化它。我认为Spring Redis序列化器可能使用默认字符集UTF-8来将Java对象序列化为字符串。 Redis中的字符串: 错误消息: 我知道用UTF-8在Byte[]和String之间的转换很可能是问题所在,但我还是想问一下,是否有人知道如何在不修改序列化部分的情况
问题内容: 我需要将对象序列化为String并反序列化。 我阅读了关于stackoverflow的建议,并编写了以下代码: } 但我得到错误: 为什么?我预期:dx = 5 dy = 3 怎样做才好?啊。我不想在文件中写入此对象。我必须使用字符串格式。 问题答案: 使用 代替 ,因为String转换会破坏数据(由于编码)。 如果确实需要将结果存储在字符串中,则需要一种安全的方法将任意字节存储在字符
我使用像:
问题内容: 我有以下类,它是由Jackson映射的(简化版): 在某些情况下,服务器会返回,然后我想将name设置为空的Java String。 是否有任何Jackson注释,或者如果属性为,我应该只检查getter中的null并返回空字符串? 问题答案: 您可以在默认构造函数中或声明时进行设置: 要么