Veuillez indiquer comment convertir une String
en JsonObject
à l'aide de la bibliothèque gson
.
Ce que je fais sans succès:
String string = "abcde";
Gson gson = new Gson();
JsonObject json = new JsonObject();
json = gson.toJson(string); // Can't convert String to JsonObject
Vous n'avez pas besoin d'utiliser JsonObject
. Vous devriez utiliser Gson pour convertir en/à partir des chaînes JSON et vos propres objets Java.
Voir le Guide de l'utilisateur Gson :
(Sérialisation)
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]
(Désérialisation)
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)
Vous pouvez le convertir en JavaBean si vous voulez utiliser:
Gson gson = new GsonBuilder().setPrettyPrinting().create();
gson.fromJson(jsonString, JavaBean.class)
Pour utiliser JsonObject, qui est plus flexible, utilisez ce qui suit:
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());
Ce qui équivaut à ce qui suit:
JsonElement jelem = gson.fromJson(json, JsonElement.class);
JsonObject jobj = jelem.getAsJsonObject();
Pour le faire plus simplement, considérez ci-dessous:
JsonObject jsonObject = (new JsonParser()).parse(json).getAsJsonObject();
String string = "abcde"; // The String which Need To Be Converted
JsonObject convertedObject = new Gson().fromJson(string, JsonObject.class);
Je fais ça et ça a marché.
On dirait que la réponse ci-dessus n'a pas répondu complètement à la question.
Je pense que vous cherchez quelque chose comme ci-dessous:
class TransactionResponse {
String Success, Message;
List<Response> Response;
}
TransactionResponse = new Gson().fromJson(response, TransactionResponse.class);
où ma réponse est quelque chose comme ceci:
{"Success":false,"Message":"Invalid access token.","Response":null}
Comme vous pouvez le constater, le nom de la variable doit être identique à la représentation sous forme de chaîne Json de la clé dans la paire clé-valeur. Cela convertira automatiquement votre chaîne gson en JsonObject.
String emailData = {"to": "[email protected]","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);
JsonObject jsonObject = (JsonObject) new JsonParser().parse("YourJsonString");
Gson gson = new Gson();
YourClass yourClassObject = new YourClass();
String jsonString = gson.toJson(yourClassObject);