Короткий ответ: вам нужно выполнить обратный вызов следующим образом:
function callback(response) {
// Here you can do what ever you want with the response object.
console.log(response);
}
$.ajax({
url: "...",
success: callback
});
As of Gson 2.3.1.
Независимо от того, что говорит документация Gson, если ваш класс не имеет конструктора no-args, и вы не зарегистрировали никаких объектов InstanceCreater
, то это создаст объект ObjectConstructor
(который строит ваш объект) с помощью UnsafeAllocator
, который использует Reflection для получения метода allocateInstance
класса sun.misc.Unsafe
для создания экземпляра вашего класса.
Этот Unsafe
класс обходит отсутствие конструктора no-args и имеет много других опасных применений . allocateInstance
states
Выделить экземпляр, но не запускать какой-либо конструктор. Инициализирует класс, если он еще не был.
blockquote>Так что на самом деле он не нужен конструктор и обойдет ваш два конструктора аргументов. См. Некоторые примеры здесь .
Если у вас есть конструктор no-args, Gson будет использовать
ObjectConstructor
, который использует это значение по умолчаниюConstructor
, вызываяyourClassType.getDeclaredConstructor(); // ie. empty, no-args
Мои 2 цента: следуйте тому, что говорит Gson, и создайте свои классы с помощью конструктора no-arg или зарегистрируйте
InstanceCreator
. Вы можете оказаться в плохом положении, используяUnsafe
.
В библиотеке Jackson есть хорошее решение, как описано здесь:
https://stackoverflow.com/a/11838468/2854723
Цель состоит в том, чтобы сообщить сериализатору через функцию Mix-Ins , какие поля JSON использовать при использовании конструктора с аргументами.
Если этот объект часть внешней библиотеки, тогда вы можете «удаленно аннотировать» с помощью функции Creator .