Java 如何使用gson库将字符串转换为JsonObject

Java 如何使用gson库将字符串转换为JsonObject,java,json,gson,Java,Json,Gson,请建议如何使用gson库将String转换为JsonObject 我所做的失败: 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
库将
String
转换为
JsonObject

我所做的失败:

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对象

见:

(序列化)

(反序列化)


看起来上面的答案并没有完全回答这个问题

我认为您正在寻找以下内容:

class TransactionResponse {

   String Success, Message;
   List<Response> Response;

}

TransactionResponse = new Gson().fromJson(response, TransactionResponse.class);

如您所见,变量名应该与键值对中键的Json字符串表示形式相同。这将自动将您的gson字符串转换为JsonObject。

您可以使用以下命令将其转换为JavaBean:

 Gson gson = new GsonBuilder().setPrettyPrinting().create();
 gson.fromJson(jsonString, JavaBean.class)
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,请使用以下命令:

 Gson gson = new GsonBuilder().setPrettyPrinting().create();
 gson.fromJson(jsonString, JavaBean.class)
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();
相当于以下内容:

 Gson gson = new GsonBuilder().setPrettyPrinting().create();
 gson.fromJson(jsonString, JavaBean.class)
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 jsonObject = (new JsonParser()).parse(json).getAsJsonObject();
我这样做了,它成功了。

注意,实例方法
JsonParser.parse
已被弃用,并被静态方法
JsonParser.parseString
取代:

Gson gson = new Gson();
YourClass yourClassObject = new YourClass();
String jsonString = gson.toJson(yourClassObject);
JsonObject-JsonObject=JsonParser.parseString(json.getAsJsonObject();

如果您只想将字符串转换为json,请使用:

使用org.json:

现在将其转换为

//now you can convert string to array and object without having complicated maps and objects
 
try {
 JSONArray jsonArray = new JSONArray("[1,2,3,4,5]");
 //you can give entire jsonObject here 
 JSONObject jsonObject= new JSONObject("{\"name\":\"test\"}") ;
             System.out.println("outputarray: "+ jsonArray.toString(2));
             System.out.println("outputObject: "+ jsonObject.toString(2));
        }catch (JSONException err){
            System.out.println("Error: "+ err.toString());
        }

但是我需要使用JsonObject。因为我的类的一个方法应该返回JsonObject。@Android:…为什么
JsonObject
是一种中间表示形式。在99%的用例中,您应该只关心将数据表示为Java对象或包含JSON的字符串。您不会回答以下问题:)当然,在某些情况下,您实际上需要将字符串转换为JsonObject。@MattBall在Ion http库()中有一个函数可以将http请求的主体设置为JsonObject。为什么对成员变量使用大写?为什么使用默认访问修饰符?如果您想在响应中使用大写字母,那么可以使用
@SerializedName(“Success”)
来代替。“Assert”是额外的内容,用于测试目的。这个答案实际上回答了问题。jsonParser.parse(json).getAsJsonObject()
JsonObject jo=jsonParser.parse(json.getAsJsonObject()
Assert.assertTrue(jo.get(“Success”).getAsBoolean()您可能应该注意到,这是以前作为对另一个答案的评论发布的。抱歉,没有代码格式。。那评论没有焦点。。这个答案实际上比其他答案更好
import org.json.JSONException;
import org.json.JSONObject;
import org.json.JSONArray;
//now you can convert string to array and object without having complicated maps and objects
 
try {
 JSONArray jsonArray = new JSONArray("[1,2,3,4,5]");
 //you can give entire jsonObject here 
 JSONObject jsonObject= new JSONObject("{\"name\":\"test\"}") ;
             System.out.println("outputarray: "+ jsonArray.toString(2));
             System.out.println("outputObject: "+ jsonObject.toString(2));
        }catch (JSONException err){
            System.out.println("Error: "+ err.toString());
        }