Antworten:
Sie müssen nicht verwenden JsonObject
. Sie sollten Gson verwenden, um in / von JSON-Zeichenfolgen und Ihre eigenen Java-Objekte zu konvertieren.
Siehe das Gson-Benutzerhandbuch :
(Serialisierung)
Gson gson = new Gson(); gson.toJson(1); // prints 1 gson.toJson("abcd"); // prints "abcd" gson.toJson(new Long(10)); // prints 10 int[] values = { 1 }; gson.toJson(values); // prints [1]
(Deserialisierung)
int one = gson.fromJson("1", int.class); Integer one = gson.fromJson("1", Integer.class); Long one = gson.fromJson("1", Long.class); Boolean false = gson.fromJson("false", Boolean.class); String str = gson.fromJson("\"abc\"", String.class); String anotherStr = gson.fromJson("[\"abc\"]", String.class)
JsonObject
ist eine Zwischendarstellung. In 99% der Anwendungsfälle sollten Sie sich wirklich nur darum kümmern, Ihre Daten als Java-Objekt oder als JSON-haltige Zeichenfolge darzustellen.
Sie können es in eine JavaBean konvertieren, wenn Sie Folgendes verwenden möchten:
Gson gson = new GsonBuilder().setPrettyPrinting().create();
gson.fromJson(jsonString, JavaBean.class)
Verwenden Sie Folgendes, um JsonObject zu verwenden, das flexibler ist:
String json = "{\"Success\":true,\"Message\":\"Invalid access token.\"}";
JsonParser jsonParser = new JsonParser();
JsonObject jo = (JsonObject)jsonParser.parse(json);
Assert.assertNotNull(jo);
Assert.assertTrue(jo.get("Success").getAsString());
Welches entspricht dem Folgenden:
JsonElement jelem = gson.fromJson(json, JsonElement.class);
JsonObject jobj = jelem.getAsJsonObject();
JsonObject jo = jsonParser.parse(json).getAsJsonObject();
undAssert.assertTrue(jo.get("Success").getAsBoolean());
Um dies auf einfachere Weise zu tun, beachten Sie Folgendes:
JsonObject jsonObject = (new JsonParser()).parse(json).getAsJsonObject();
Anscheinend hat die obige Antwort die Frage nicht vollständig beantwortet.
Ich denke, Sie suchen etwas wie das Folgende:
class TransactionResponse {
String Success, Message;
List<Response> Response;
}
TransactionResponse = new Gson().fromJson(response, TransactionResponse.class);
wo meine Antwort so etwas ist:
{"Success":false,"Message":"Invalid access token.","Response":null}
Wie Sie sehen können, sollte der Variablenname mit der Json-Zeichenfolgendarstellung des Schlüssels im Schlüsselwertpaar übereinstimmen. Dadurch wird Ihre gson-Zeichenfolge automatisch in JsonObject konvertiert.
@SerializedName("Success")
stattdessen beispielsweise.
String emailData = {"to": "abc@abctest.com","subject":"User details","body": "The user has completed his training"
}
// Java model class
public class EmailData {
public String to;
public String subject;
public String body;
}
//Final Data
Gson gson = new Gson();
EmailData emaildata = gson.fromJson(emailData, EmailData.class);
Gson gson = new Gson();
YourClass yourClassObject = new YourClass();
String jsonString = gson.toJson(yourClassObject);
Beachten Sie, dass ab Gson 2.8.6 die Instanzmethode JsonParser.parse
veraltet und durch eine statische Methode ersetzt wurde JsonParser.parseString
:
JsonObject jsonObject = JsonParser.parseString(json).getAsJsonObject();