How to convert a String to JsonObject using gson library

JavaJsonGson

Java Problem Overview


Please advice how to convert a String to JsonObject using gson library.

What I unsuccesfully do:

String string = "abcde";
Gson gson = new Gson();
JsonObject json = new JsonObject();
json = gson.toJson(string); // Can't convert String to JsonObject

Java Solutions


Solution 1 - Java

You can convert it to a JavaBean if you want using:

 Gson gson = new GsonBuilder().setPrettyPrinting().create();
 gson.fromJson(jsonString, JavaBean.class)

To use JsonObject, which is more flexible, use the following:

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

Which is equivalent to the following:

JsonElement jelem = gson.fromJson(json, JsonElement.class);
JsonObject jobj = jelem.getAsJsonObject();

Solution 2 - Java

To do it in a simpler way, consider below:

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

Solution 3 - Java

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

I do this, and it worked.

Solution 4 - Java

You don't need to use JsonObject. You should be using Gson to convert to/from JSON strings and your own Java objects.

See the Gson User Guide:

> (Serialization) > > 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] > > (Deserialization) > > 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)

Solution 5 - Java

Looks like the above answer did not answer the question completely.

I think you are looking for something like below:

class TransactionResponse {

   String Success, Message;
   List<Response> Response;

}

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

where my response is something like this:

{"Success":false,"Message":"Invalid access token.","Response":null}

As you can see, the variable name should be same as the Json string representation of the key in the key value pair. This will automatically convert your gson string to JsonObject.

Solution 6 - Java

String emailData = {"to": "[email protected]","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);

Solution 7 - Java

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

Solution 8 - Java

Note that as of Gson 2.8.6, instance method JsonParser.parse has been deprecated and replaced by static method JsonParser.parseString:

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

Solution 9 - Java

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

Solution 10 - Java

if you just want to convert string to json then use:

use 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 these

import org.json.JSONException;
import org.json.JSONObject;
import org.json.JSONArray;

Now convert it as

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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionEugeneView Question on Stackoverflow
Solution 1 - JavaeadjeiView Answer on Stackoverflow
Solution 2 - Javauser2285078View Answer on Stackoverflow
Solution 3 - JavaCalvinCheView Answer on Stackoverflow
Solution 4 - JavaMatt BallView Answer on Stackoverflow
Solution 5 - JavaTrigunaView Answer on Stackoverflow
Solution 6 - JavaBAIJU SHARMAView Answer on Stackoverflow
Solution 7 - JavaTrinadh KoyaView Answer on Stackoverflow
Solution 8 - JavaChristian S.View Answer on Stackoverflow
Solution 9 - JavaUdhayaView Answer on Stackoverflow
Solution 10 - JavaPDHideView Answer on Stackoverflow