In Java, you can convert a JSON-formatted string into an in-memory JSON object representation using several popular libraries, each offering its own API and features. The simplest is the lightweight org.json (JSON-java) library, which provides a barebones JSONObject
class that can parse a JSON string directly via its constructor (Parsing a String into a JSONObject in Java and vice-versa – Medium). If you prefer minimal dependencies, json-simple offers a basic parser that produces a JSONObject
via the JSONParser
class (How to convert String to jsonObject in Java? – Stack Overflow). For more powerful data-binding and tree-model capabilities, Jackson’s ObjectMapper
can parse a string into a JsonNode
or mapped Java classes with high performance (Jackson – Marshall String to JsonNode | Baeldung). Google’s Gson library similarly allows conversion to either a tree of JsonElement
s or directly to Java objects, with JsonParser.parseString(...).getAsJsonObject()
as its simplest form (Convert String to JsonObject with Gson | Baeldung). Finally, the javax.json API (Java EE) provides a standard JsonReader
for parsing without third-party dependencies (JsonReader (Java(TM) EE 7 Specification APIs) – Oracle Help Center).
1. org.json (JSON-java)
Dependency
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20210307</version>
</dependency>
Example
import org.json.JSONObject;
String jsonString = "{\"phonetype\":\"N95\",\"cat\":\"WP\"}";
try {
JSONObject jsonObject = new JSONObject(jsonString);
String phoneType = jsonObject.getString("phonetype");
String cat = jsonObject.getString("cat");
} catch (JSONException e) {
e.printStackTrace();
}
The JSONObject(String)
constructor parses the JSON text into an object whose values can be retrieved via typed getters (JSONObject (JSON in Java 20171018 API) – javadoc.io).
2. json-simple
Dependency
<dependency>
<groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId>
<version>1.1.1</version>
</dependency>
Example
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
String jsonString = "{\"phonetype\":\"N95\",\"cat\":\"WP\"}";
try {
JSONParser parser = new JSONParser();
JSONObject json = (JSONObject) parser.parse(jsonString);
String phoneType = (String) json.get("phonetype");
String cat = (String) json.get("cat");
} catch (ParseException e) {
e.printStackTrace();
}
The JSONParser.parse()
method returns an Object
which can be cast to JSONObject
(How to convert String to jsonObject in Java? – Stack Overflow).
3. Jackson (com.fasterxml.jackson.databind)
Dependency
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.15.0</version>
</dependency>
Example (Tree Model)
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
String jsonString = "{\"phonetype\":\"N95\",\"cat\":\"WP\"}";
ObjectMapper mapper = new ObjectMapper();
JsonNode node = mapper.readTree(jsonString);
String phoneType = node.get("phonetype").asText();
String cat = node.get("cat").asText();
ObjectMapper.readTree()
parses JSON into a JsonNode
tree, allowing navigation of nested structures (Jackson – Marshall String to JsonNode | Baeldung).
Example (Data Binding)
public class Phone {
public String phonetype;
public String cat;
}
Phone phone = mapper.readValue(jsonString, Phone.class);
This maps JSON fields directly to Java object fields.
4. Gson (com.google.gson)
Dependency
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.10.1</version>
</dependency>
Example (Tree Model)
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
String jsonString = "{\"phonetype\":\"N95\",\"cat\":\"WP\"}";
JsonObject jsonObject = JsonParser.parseString(jsonString)
.getAsJsonObject();
String phoneType = jsonObject.get("phonetype").getAsString();
String cat = jsonObject.get("cat").getAsString();
JsonParser.parseString()
returns a JsonElement
, which can be cast to JsonObject
(How to convert jsonString to JSONObject in Java – Stack Overflow).
Example (Data Binding)
public class Phone {
String phonetype;
String cat;
}
Phone phone = new Gson().fromJson(jsonString, Phone.class);
This deserializes JSON directly into a POJO.
5. javax.json (Java EE / Jakarta JSON Processing)
Dependency
<dependency>
<groupId>javax.json</groupId>
<artifactId>javax.json-api</artifactId>
<version>1.1.4</version>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.json</artifactId>
<version>1.1.4</version>
</dependency>
Example
import javax.json.Json;
import javax.json.JsonObject;
import javax.json.JsonReader;
import java.io.StringReader;
String jsonString = "{\"phonetype\":\"N95\",\"cat\":\"WP\"}";
try (JsonReader reader = Json.createReader(new StringReader(jsonString))) {
JsonObject jsonObject = reader.readObject();
String phoneType = jsonObject.getString("phonetype");
String cat = jsonObject.getString("cat");
}
JsonReader.readObject()
parses the input into a JsonObject
, part of the standard JSON-P API (JsonReader (Java(TM) EE 7 Specification APIs) – Oracle Help Center).
Choosing the Right Library
- org.json: Quick and minimal; ideal for small scripts or Android.
- json-simple: Very lightweight; suits simple parsing needs.
- Jackson: High performance, full-featured tree model, streaming, and data binding.
- Gson: Easy POJO mapping and simple API, good for Android.
- javax.json: Standard API for Java EE/Jakarta EE, no extra third-party jars in compliant containers.
Each approach requires adding the appropriate Maven (or Gradle) dependency and choosing the API that best fits your project’s needs—whether you want barebones parsing, full data binding, or Java EE compliance.