GSON in Google App Engine löst eine Sicherheitsausnahme aus

8

Ich versuche, ein Objekt mithilfe der GSON-Bibliothek in Google App Engine in JSON zu konvertieren. Aus irgendeinem Grund wirft es diese Ausnahme und ich verstehe nicht, wie ich das lösen soll. Irgendwelche Vorschläge?

%Vor%

Code verwende ich:

%Vor%     
Legend 09.06.2010, 02:14
quelle

4 Antworten

3

Die App-Engine unterstützt die Reflektion - Sie versuchen jedoch, ein privates Feld einer JRE-Klasse zu reflektieren:

  

Reflexion

     

Eine Bewerbung ist erlaubt,   uneingeschränkter, reflektierender Zugang zu seinem   eigene Klassen. Es kann beliebige private abfragen   Mitglieder, verwenden   java.lang.reflect.AccessibleObject.setAccessible (),   und private Mitglieder lesen / setzen.

     

Eine Anwendung kann auch reflektieren   auf JRE- und API-Klassen , wie z   java.lang.String und   javax.servlet.http.HttpServletRequest.    Es kann jedoch nur öffentlich zugreifbar sein   Mitglieder dieser Klassen nicht   geschützt oder privat.

     

Eine Anwendung kann nicht widerspiegeln   andere Klassen, die nicht zu   selbst, und es kann nicht die verwenden   setAccessible () -Methode, die zu umgehen ist   Diese Einschränkungen.

... aus Ссылка :

Ich würde einen benutzerdefinierten Serializer für Bitset schreiben.

Siehe: Ссылка

Auch: Ссылка

Ссылка

    
chickeninabiscuit 09.06.2010, 15:01
quelle
1

Sie können GsonBuilder mit .excludeFieldsWithoutExposeAnnotation () erstellen und alle serialisierten Felder mit der Annotation @Expose markieren. In diesem Fall versucht Gson nicht, andere Felder zu serialisieren.

%Vor%     
Vasiliy 12.08.2010 09:24
quelle
0

Wenn App Engine Reflection nicht unterstützt, müssen wir unsere eigene toJSON-Methode schreiben. Dies kann folgendermaßen geschehen (keine große Sache, aber jemand könnte es nützlich finden):

%Vor%

Dann können Sie eine toString-Methode für dieses Objekt verwenden, um die JSON-Darstellung auszugeben. Nicht das Beste, dem ich zustimme, aber einige Abhilfe für jetzt.

    
Legend 09.06.2010 03:12
quelle
0

Ich hatte kürzlich ein ähnliches Problem.

Ich habe Gson laufen lassen, um JSON zu parsen, und es hat lange gut funktioniert, also machte ich mir keine Sorgen, dass GAE Reflection nicht auf seiner Plattform erlaubt.

Ich habe eine HashMap die Form-Klasse eingeführt und es funktionierte gut in meinem lokalen System, wobei Gson JSON Parse perfekt macht.

Aber als ich diesen Code in der Google App Engine Cloud bereitgestellt habe, ist er mit folgender Ausnahme fehlgeschlagen:

%Vor%

So, jetzt bin ich zu Jackson JSON Parser gewechselt, der schneller ist und keine Reflektion benutzt - aber ja - mehr Arbeit.

    
Savio Sebastian 19.01.2017 11:20
quelle

Tags und Links