Ich versuche, ein JSON zu nehmen und konvertieren Sie es in ein POJO mit Gson Fähigkeit. Ich habe es mit der serialisierten Klasse als Klasse in einem separaten Paket arbeiten lassen, aber jetzt versuche ich, die serialisierte Klasse zu einer inneren Klasse der Klasse zu machen, die sie aufruft, ähnlich wie ich sie unten dargestellt habe.Gson zu pojo Serialisierung der inneren Klasse
public class A {
private final Gson gson;
public A() {
gson = new GsonBuilder().serializeNulls().create();
}
public void foo(String json){
B b = gson.fromJson(json, B.class);
}
public static class B {
private String bar;
public String getBar(){
return bar;
}
}
}
Beispiel JSON:
{"bar": "test"}
Diese Einstellung liefert Nullwerte für die inneren Klassenvariablen; In diesem Fall einfach bar. Ich habe sichergestellt, dass der übergebene JSON mit den Namen der Variablen in Klasse B übereinstimmt, in diesem Beispiel. Zusätzlich habe ich experimentiert, um die innere Klasse nicht-statisch und privat zu machen, ohne Erfolg. Nach meinem Verständnis muss es eine statische Klasse sein, damit es mit gson serialisiert werden kann. Ist etwas offensichtlich offensichtlich, dass ich falsch mache, dass Sie sehen können?
Könnte es sein, dass Sie den Setter für * bar * vermissen? Können Sie einen Beispiel-JSON posten? – watery
Ich dachte nicht, dass es das ist, da dies die genauen Klassen sind, die ich hatte, als es in einem separaten Paket arbeitete, im Gegensatz zu einer inneren Klasse. Ging voraus und versuchte es trotzdem und hatte kein Glück. Ich bearbeite meinen Beitrag, um einen Beispiel-JSON hinzuzufügen. – Mitch
Warum haben Sie 'gson' als Parameter für die 'foo'-Funktion, wenn alles sofort passiert ist, dass es sofort überschrieben wird? – Michael