Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在序列化对象时,如何强制Jackson将数字写入字符串_Java_Javascript_Json_Jackson - Fatal编程技术网

Java 在序列化对象时,如何强制Jackson将数字写入字符串

Java 在序列化对象时,如何强制Jackson将数字写入字符串,java,javascript,json,jackson,Java,Javascript,Json,Jackson,我的一个java对象上有一个相当大的id。当它将其转换为JSON时,它会将其作为一个数字发送(例如,{“id”:1000110040000000001}),但一旦它成为一个javascript对象,id就会更改为1000110040000000000。我读到这个问题 当id较小时,它可以正常工作。我的第一个想法是强迫Jackson将所有数字转换成字符串,但我也愿意接受其他选择。如果可能的话,我不希望向java对象添加Jackson注释。Jackson数据绑定(至少2.1.3)提供了特殊的ToSt

我的一个java对象上有一个相当大的id。当它将其转换为JSON时,它会将其作为一个数字发送(例如,{“id”:1000110040000000001}),但一旦它成为一个javascript对象,id就会更改为1000110040000000000。我读到这个问题

当id较小时,它可以正常工作。我的第一个想法是强迫Jackson将所有数字转换成字符串,但我也愿意接受其他选择。如果可能的话,我不希望向java对象添加Jackson注释。

Jackson数据绑定(至少2.1.3)提供了特殊的ToString序列化程序。那是为了我

@Id @JsonSerialize(using = ToStringSerializer.class)
private Long id;

com.fasterxml.jackson.core:jackson-core:2.5.4
提供 JsonGenerator.Feature.WRITE_NUMBERS_作为
ObjectMapper
配置的字符串

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

要包含依赖项,请执行以下操作:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.7.2</version>
</dependency>

com.fasterxml.jackson.core
杰克逊核心
2.7.2

相关:感谢您指出这一点。显然,在2.1.3版中,您可以这样做:@JsonSerialize(使用=ToStringSerializer.class)。如果我可以在对象映射器中设置一些总体设置,那还是很好的,但是如果不可能的话,这就可以了。可能是重复的,谢谢!这种方法允许我以我想要的方式序列化自动生成的类,而无需更改类定义。在application.properties中,您可以使用
spring.jackson.generator.write numbers as strings=true
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.7.2</version>
</dependency>