Serialisieren einer statischen inneren Klasse mit FlexJSON
-
26-12-2019 - |
Frage
Ich versuche, diese innere Klasse zu serialisieren
static class functionMessage{
String type = "function";
String id;
String function;
Object parameters;
public functionMessage(String ID, String Function, Boolean Parameters) {
this.id = ID;
this.function = Function;
this.parameters = (Boolean) Parameters;
}
}
mit
new flexjson.JSONSerializer().exclude("*.class").serialize(
new functionMessage(
"container",
"showContainer",
Boolean.TRUE
)
)
aber nur {}
wird zurückgegeben.
Wenn ich versuche hinzuzufügen public
Vor jeder Mitgliedsvariablen wird dieser Fehler angezeigt:
flexjson.JSONException: Error trying to deepSerialize
Caused by: java.lang.IllegalAccessException: Class flexjson.BeanProperty can not access a member of class with modifiers "public"
Ich habe versucht, dem zu folgen Beispiel, aber es zeigt nicht wie Person
ist konstruiert, und ich weiß nicht, wie man die Klasse zu einem macht static
Die innere Klasse wirkt sich darauf aus, da ich noch ziemlich neu in Java bin.
Ich habe auch versucht, alle von Google bereitgestellten Lösungen für diesen Fehler zu lesen, aber immer noch nichts.
Wie kann flexjson.JSONSerializer()
Gibt alle Mitgliedsvariablen von a zurück static
innere Klasse?
Lösung
aber nur {} wird zurückgegeben.
Scheinbar flexjson
verwendet Getter, um JSON-Elemente aufzulösen.Deine Klasse hat keine.
Fügen Sie einfach entsprechende Getter hinzu
public String getType() {
return type;
}
public String getId() {
return id;
}
public String getFunction() {
return function;
}
public Object getParameters() {
return parameters;
}
Wie für
Wenn ich versuche, public vor jeder Mitgliedsvariablen hinzuzufügen, wird dieser Fehler angezeigt:
Das liegt daran, dass Sie static
Die Klasse verfügt über Standardpaketzugriff und ihre Felder sind daher für keine Klasse außerhalb des Pakets sichtbar, in dem sie deklariert ist.