Converter String em objecto JSON em Java

Rupam Yadav 12 outubro 2023
  1. Utilize JSONObject para Converter uma String em objecto JSON em Java
  2. Utilizar o Google Gson para Converter uma String para Objecto JSON em Java
  3. Utilize Jackson para converter uma string para um objecto JSON
Converter String em objecto JSON em Java

Neste tutorial, vamos discutir como converter uma string num objecto JSON em Java. Temos diferentes bibliotecas disponíveis para realizar esta tarefa.

Utilize JSONObject para Converter uma String em objecto JSON em Java

O JSONObject pode analisar um string num objecto semelhante a um mapa. Armazena pares de valores chave não ordenados. A biblioteca JSON-java, vulgarmente conhecida como org.json, é utilizada aqui com a necessária dependência maven. A dependência maven que utilizámos é dada abaixo.

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

Para analisar uma string JSON a JSONObject, passamos a string ao construtor, como se mostra abaixo.

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

public class StringToJsonObject {
  public static void main(String[] args) {
    try {
      String str = "{\"name\":\"John\",\"age\":\"30\"}";
      JSONObject jsonObject = new JSONObject(str);
      System.out.println("OBJECT : " + jsonObject.toString());
    } catch (JSONException err) {
      System.out.println("Exception : " + err.toString());
    }
  }
}

Resultado:

OBJECT : {"age":"30","name":"John"}

Utilizar o Google Gson para Converter uma String para Objecto JSON em Java

Google Gson é uma biblioteca de java para serializar/deserializar Objectos Java para o JSON ou vice-versa. Também pode ser utilizada para converter a string Java para o seu objecto JSON equivalente.

A dependência maven que é necessária para esta biblioteca é dada abaixo.

 <dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.8.6</version>
 </dependency>

Neste código, criamos primeiro uma instância de Gson utilizando GsonBuilder, chamando ao seu método create(). Podemos também activar várias configurações no builder. Como mostrado abaixo, utilizamos o seu método setPrettyPrinting(). Como o nome sugere, imprime bem a saída JSON.

Mais tarde utilizámos o método fromJson do objecto Gson, que analisa a string JSON para o objecto User. O método toJson() utiliza Gson para converter o objecto User de volta para a string JSON. Assim, a string str é convertida num objecto JSON utilizando a biblioteca Gson.

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonIOException;
public class StringToJsonObject {
  public static void main(String[] args) {
    try {
      String str = "{\"name\":\"John\", \"age\":21 , \"place\":\"Nevada\"}";

      GsonBuilder builder = new GsonBuilder();
      builder.setPrettyPrinting();
      Gson gson = builder.create();
      User user = gson.fromJson(str, User.class);

      System.out.println(user.ShowAsString());

      str = gson.toJson(user);
      System.out.println("User Object as string : " + str);

    } catch (JsonIOException err) {
      System.out.println("Exception : " + err.toString());
    }
  }
}

class User {
  public String name;
  public int age;
  public String place;
  public String ShowAsString() {
    return "User [" + name + ", " + age + ", " + place + "]";
  }
}

Resultado:

User[John, 21, Nevada] User Object as string : {
  "name" : "John", "age" : 21, "place" : "Nevada"
}

Utilize Jackson para converter uma string para um objecto JSON

Jackson é também conhecido como a biblioteca Java JSON. O ObjectMapper é utilizado para mapear JSON em Objectos Java ou Objectos Java em JSON. A dependência maven utilizada para esta biblioteca é mostrada abaixo.

 <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
  <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.11.3</version>
  </dependency>

O Jackson tem um modelo em árvore incorporado para representar o Objecto JSON. JsonNode é a classe que representa o modelo em árvore. A instância ObjectMapper mapper parses JSON num modelo de árvore JsonNode chamado readTree().

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
public class StringToJsonObject {
  public static void main(String[] args) {
    String json_str = "{\"name\":\"John\", \"age\":21 , \"place\":\"Nevada\"}";
    ObjectMapper mapper = new ObjectMapper();
    try {
      JsonNode node = mapper.readTree(json_str);
      String name = node.get("name").asText();
      String place = node.get("age").asText();
      System.out.println("node" + node);
      System.out.println("name: " + name + ", place: " + place);
    } catch (JsonProcessingException e) {
      e.printStackTrace();
    }
  }
}

Resultado:

node{"name":"John","age":21,"place":"Nevada"}
name: John, place: 21
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

Artigo relacionado - Java String

Artigo relacionado - Java JSON