java.lang.RuntimeException: impossible d'appeler public com.exemple.syncapp.MessageBase() sans arguments
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println(request.getParameter("msg").toString());
String data = request.getParameter("msg").toString();
Gson gson = new Gson();
MessageBase msggg = gson.fromJson(data, MessageBase.class);
//System.out.println(msggg.Id + msggg.MessageText);
}
public abstract class MessageBase implements Serializable {
public int Id;
public String MessageText;
public Date ReceiveDate;
}
public class SyncSmsMessage extends MessageBase {
public String SenderNum;
}
Le code fonctionne jusqu'à ce que MessageBase msggg=gson.fromJson(data, MessageBase.class);
. Je bénéficier de cette exception:
java.lang.RuntimeException: Failed to invoke public com.example.syncapp.MessageBase() with no args
at com.google.gson.internal.ConstructorConstructor$2.construct(ConstructorConstructor.java:94)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:162)
at com.google.gson.Gson.fromJson(Gson.java:795)
at com.google.gson.Gson.fromJson(Gson.java:761)
at com.google.gson.Gson.fromJson(Gson.java:710)
at com.google.gson.Gson.fromJson(Gson.java:682)
at AndroidServlet.doPost(AndroidServlet.java:75)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
Ce que je dois faire?
J'ai mis .jar dans le dossier lib et je pense que le tomcat charge de l' .jar.
OriginalL'auteur user1612863 | 2013-03-10
Vous devez vous connecter pour publier un commentaire.
De GSON Guide de l'Utilisateur:
Votre problème, c'est que GSON de Instance Créateur besoin d'un constructeur sans argument de la classe dans laquelle vous souhaitez désérialiser la réponse JSON, à savoir
MessageBase
.Sinon, vous devez écrire votre propre Instance de Créateur, comme ce.
OriginalL'auteur MikO
J'ai le même problème lors de l'utilisation de rénovation et de comprendre c'est se produire lors de l'utilisation résumé classe je suis donc créer de la classe vide que s'étend classe abstraite (
MessageBase
) comme ceci :Et maintenant
BaseResponse
qui ont tous les champs deMessageBase
OriginalL'auteur Radesh