请建议如何将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
Run Code Online (Sandbox Code Playgroud)
ead*_*jei 163
如果要使用,可以将其转换为JavaBean:
Gson gson = new GsonBuilder().setPrettyPrinting().create();
gson.fromJson(jsonString, JavaBean.class)
Run Code Online (Sandbox Code Playgroud)
要使用更灵活的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());
Run Code Online (Sandbox Code Playgroud)
这相当于以下内容:
JsonElement jelem = gson.fromJson(json, JsonElement.class);
JsonObject jobj = jelem.getAsJsonObject();
Run Code Online (Sandbox Code Playgroud)
小智 43
要以更简单的方式执行此操作,请考虑以下事项:
JsonObject jsonObject = (new JsonParser()).parse(json).getAsJsonObject();
Run Code Online (Sandbox Code Playgroud)
Mat*_*all 30
你不需要使用JsonObject.您应该使用Gson转换为JSON字符串和您自己的Java对象.
请参阅Gson用户指南:
(串行化)
Run Code Online (Sandbox Code Playgroud)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](反序列化)
Run Code Online (Sandbox Code Playgroud)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)
Cal*_*Che 25
String string = "abcde"; // The String which Need To Be Converted
JsonObject convertedObject = new Gson().fromJson(string, JsonObject.class);
Run Code Online (Sandbox Code Playgroud)
我这样做了,而且很有效.
小智 8
看起来上面的答案没有完全回答这个问题.
我想你正在寻找类似下面的东西:
class TransactionResponse {
String Success, Message;
List<Response> Response;
}
TransactionResponse = new Gson().fromJson(response, TransactionResponse.class);
Run Code Online (Sandbox Code Playgroud)
我的回答是这样的:
{"Success":false,"Message":"Invalid access token.","Response":null}
Run Code Online (Sandbox Code Playgroud)
如您所见,变量名称应与键值对中键的Json字符串表示相同.这将自动将您的gson字符串转换为JsonObject.
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);
Run Code Online (Sandbox Code Playgroud)
请注意,从 Gson 2.8.6 开始,实例方法JsonParser.parse已被弃用并被静态方法取代JsonParser.parseString:
JsonObject jsonObject = JsonParser.parseString(json).getAsJsonObject();
Run Code Online (Sandbox Code Playgroud)