19

Java オブジェクトの 1 つでかなり大きい ID を持っています。jackson がそれを JSON に変換すると、数値として送信されます (例: {"id":1000110040000000001}) が、javascript オブジェクトになるとすぐに、id は 1000110040000000000 に変更されます。この問題についてここで読みました

id が小さい場合は正常に動作します。私の最初の考えは、ジャクソンにすべての数値を文字列に変換させることですが、他のオプションも受け入れています。可能であれば、Jackson アノテーションを Java オブジェクトに追加したくありません。

4

2 に答える 2

20

com.fasterxml.jackson.core:jackson-core:2.5.4構成用に JsonGenerator.Feature.WRITE_NUMBERS_AS_STRINGS を提供し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"}

class Foo {
    @XmlElement(name = "a")
    Integer a
}

依存関係を含めるには:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.7.2</version>
</dependency>
于 2016-03-09T20:58:58.160 に答える