Я видел одну из самых странных вещей в javascript. Серверная сторона (spring):
@RequestMapping(value = "/foo", method = RequestMethod.GET)
@ResponseBody
public Long foo() {
return 793548328091516928L;
}
Я возвращаю одно длинное значение и:
$.get('/foo').done(function(data){
console.log(data);
});
Он представляет длинное целое число как "793548328091516900", заменив (округляя) две последние цифры с 0s. Когда я делаю этот запрос GET из любой адресной строки браузера, число отображается правильно; таким образом, это, по-моему, проблема js.
Возврат строки вместо длинной от сервера и ее обработка с помощью:
var x = new Number(data).toFixed();
очевидно, решение. Но мне не так повезло, что мне приходится обрабатывать сложные POJO (преобразованные в JSON), некоторые поля которых (некоторые вложенные) набираются с типом java.lang.Long
. Если я попытаюсь передать это POJO другому объекту, не имея полей, набранных Long, это, очевидно, громоздко.
Есть ли какое-либо решение этого препятствия более ясным образом?