私は JavaScript で最も奇妙なものの 1 つを見てきました。サーバー側 (春):
@RequestMapping(value = "/foo", method = RequestMethod.GET)
@ResponseBody
public Long foo() {
return 793548328091516928L;
}
単一の long 値を返します。
$.get('/foo').done(function(data){
console.log(data);
});
長整数を "793548328091516900" として表し、最後の 2 桁を (実際には丸め) 0 に置き換えます。任意のブラウザのアドレス バーから GET リクエストを行うと、数値が正しく表示されます。したがって、私の意見では、これは js の問題です。
サーバーから long ではなく文字列を返し、次のように処理します。
var x = new Number(data).toFixed();
明らかに解決策です。しかし、幸運なことに、一部のフィールド (一部はネストされている) が type でjava.lang.Long
型指定されている複雑な POJO (JSON に変換) を処理する必要があります。この POJO を、Long 型のフィールドを持たない別のオブジェクトにキャストしようとすると、明らかに面倒です。
その障害に対するより明確な解決策はありますか?