a String
를 JsonObject
사용하여 gson
라이브러리 로 변환하는 방법을 조언하십시오 .
내가 실패한 일 :
String string = "abcde";
Gson gson = new Gson();
JsonObject json = new JsonObject();
json = gson.toJson(string); // Can't convert String to JsonObject
답변:
을 사용할 필요가 없습니다 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)
JsonObject
중간 표현입니다. 99 %의 사용 사례에서 데이터를 Java 객체 또는 JSON이 포함 된 문자열로 표현하는 데만 신경을 써야합니다.
다음을 사용하려면 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();
JsonObject jo = jsonParser.parse(json).getAsJsonObject();
그리고Assert.assertTrue(jo.get("Success").getAsBoolean());
더 간단한 방법으로 수행하려면 다음을 고려하십시오.
JsonObject jsonObject = (new JsonParser()).parse(json).getAsJsonObject();
위의 답변이 질문에 완전히 답하지 않은 것 같습니다.
나는 당신이 아래와 같은 것을 찾고 있다고 생각합니다.
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로 자동 변환됩니다.
@SerializedName("Success")
대신 예를 사용하십시오.
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 2.8.6 기준으로 , 인스턴스 메소드는 JsonParser.parse
사용되지 않으며 정적 방법으로 교체 JsonParser.parseString
:
JsonObject jsonObject = JsonParser.parseString(json).getAsJsonObject();