Как преобразовать String в JsonObject с помощью библиотеки gson
Просьба советовать, как преобразовать String
в JsonObject
с помощью библиотеки gson
.
Что я неудачно делаю:
String string = "abcde";
Gson gson = new Gson();
JsonObject json = new JsonObject();
json = gson.toJson(string); // Can't convert String to JsonObject
Ответы
Ответ 1
Вам не нужно использовать JsonObject
. Вы должны использовать Gson для преобразования в/из строк JSON и ваших собственных объектов Java.
См. Руководство пользователя Gson:
(Сериализация)
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]
(десериализации)
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)
Ответ 2
Вы можете преобразовать его в JavaBean, если хотите:
Gson gson = new GsonBuilder().setPrettyPrinting().create();
gson.fromJson(jsonString, JavaBean.class)
Чтобы использовать JsonObject, который является более гибким, используйте следующее:
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());
Что эквивалентно следующему:
JsonElement jelem = gson.fromJson(json, JsonElement.class);
JsonObject jobj = jelem.getAsJsonObject();
Ответ 3
Чтобы сделать это более простым способом, рассмотрите ниже:
JsonObject jsonObject = (new JsonParser()).parse(json).getAsJsonObject();
Ответ 4
Похоже, что вышеупомянутый ответ полностью не ответил на вопрос.
Я думаю, что вы ищете что-то вроде:
class TransactionResponse {
String Success, Message;
List<Response> Response;
}
TransactionResponse = new Gson().fromJson(response, TransactionResponse.class);
где мой ответ выглядит примерно так:
{"Success":false,"Message":"Invalid access token.","Response":null}
Как вы можете видеть, имя переменной должно быть таким же, как строковое представление Json ключа в паре значений ключа. Это автоматически преобразует вашу gson-строку в JsonObject.
Ответ 5
String string = "abcde"; // The String which Need To Be Converted
JsonObject convertedObject = new Gson().fromJson(string, JsonObject.class);
Я делаю это, и это сработало.
Ответ 6
Gson gson = new Gson();
YourClass yourClassObject = new YourClass();
String jsonString = gson.toJson(yourClassObject);
Ответ 7
JsonObject jsonObject = (JsonObject) new JsonParser().parse("YourJsonString");