如何使用gson库将String转换为JsonObject

时间:2011-02-26 17:15:29

标签: java json 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

10 个答案:

答案 0 :(得分:157)

如果您想使用,可以将其转换为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();

答案 1 :(得分:41)

要以更简单的方式进行,请考虑以下内容:

JsonObject jsonObject = (new JsonParser()).parse(json).getAsJsonObject();

答案 2 :(得分:29)

您无需使用JsonObject。您应该使用Gson转换为JSON字符串和您自己的Java对象。

请参阅Gson User Guide

  

(序列化)

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)

答案 3 :(得分:19)

String string = "abcde"; // The String which Need To Be Converted
JsonObject convertedObject = new Gson().fromJson(string, JsonObject.class);

我这样做,并且有效。

答案 4 :(得分:7)

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

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

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 :(得分:4)

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);

答案 6 :(得分:2)

JsonObject jsonObject = (JsonObject) new JsonParser().parse("YourJsonString");

答案 7 :(得分:2)

Gson gson = new Gson();
YourClass yourClassObject = new YourClass();
String jsonString = gson.toJson(yourClassObject);

答案 8 :(得分:0)

请注意,as of Gson 2.8.6,实例方法JsonParser.parse已被弃用,并由静态方法JsonParser.parseString取代:

JsonObject jsonObject = JsonParser.parseString(json).getAsJsonObject();

答案 9 :(得分:0)

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

使用 org.json:https://mvnrepository.com/artifact/org.json/json/20210307

<!-- https://mvnrepository.com/artifact/org.json/json -->
<dependency>
    <groupId>org.json</groupId>
    <artifactId>json</artifactId>
    <version>20210307</version>
</dependency>

导入这些

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());
        }