Hoje em dia é muito comum receber dados em Cadeia JSON formato em vez de XML. Quando lidamos com JSON String em Java, ele não converte o Cadeia JSON para Objeto JSON . Mas use o Cadeia JSON sempre não é uma boa opção porque é difícil lidar com isso. Devido à mudança e à demanda da tecnologia, precisamos converter string JSON em objeto JSON para recuperar valores. para resolver este problema, existem algumas bibliotecas de código aberto que nos permitem converter string JSON em objeto JSON. Nesta seção, explicamos como converter string JSON em objeto JSON detalhadamente com exemplo. Antes de passar para o tópico principal, vamos dar uma olhada no formato JSON.
jsonStringExample = { 'name' : 'Ronaldo', 'nickname' : 'Sam', 'id' : 312, 'age' : 21, 'height' : 163, 'lastOverScore' : [4, 1, 6, 6, 2, 1] }
O formato JSON acima contém seis atributos, dos quais os dois primeiros são Strings, os próximos três são numéricos e, por último, um array JSON.
Converter string JSON em objeto JSON
Existem as três bibliotecas a seguir usadas para converter String em objeto JSON em Java:
- Usando a biblioteca Gson
- Usando a biblioteca JSON-Simple
- Biblioteca Jackson
Usando a biblioteca Gson
Gson é um software de código aberto e rico Java biblioteca fornecida pelo Google. É usado para converter JSON String em JSON Object equivalente e JSON Object em JSON String. A linha de código a seguir é usada para converter JSON String em JSON Object.
Gson g = new Gson(); Student s = g.fromJson(jsonString, Student.class)
Também podemos converter JSON Object em JSON String usando o paraJson() método.
String str = g.toJson(p);
Usando a biblioteca JSON-Simple
É outra biblioteca Java de código aberto usada para converter JSON String em JSON Object. A vantagem da biblioteca JSON-Simple é seu tamanho pequeno. É perfeito onde o ambiente de restrição de memória é importante. Observe que também é compatível com JDK 1.2. Isso significa que podemos usá-lo com um projeto legado que não está no Java 5. Usamos as instruções a seguir para converter a string JSON em objeto JSON.
JSONParser parser = new JSONParser(); JSONObject json = (JSONObject) parser.parse(stringToParse);
Usando a Biblioteca Jackson
A biblioteca Jackson é uma biblioteca Java eficiente e amplamente usada para mapear objetos Java para JSON e vice-versa. É rico em recursos, rápido em desempenho e também suporta streaming. O stream pode analisar uma grande saída JSON de serviços da Web sem carregá-la totalmente na memória. A instrução a seguir converte JSON String que representa um aluno em uma classe Java que representa o aluno.
Student student = new ObjectMapper().readValue(jsonString, Student.class);
A desvantagem da biblioteca Jackson é que ela requer pelo menos JDK 1.5. Portanto, se estivermos lidando com uma versão mais antiga, ela não caberá ali. Outra desvantagem da biblioteca Jackson é que ela não suporta J2ME.
Exemplo de conversão de string JSON em objeto JSON
No programa a seguir, convertemos uma string JSON em objeto JSON.
JsonStringToJsonObjectExample.java
import org.json.JSONObject; import org.json.JSONArray; public class JsonStringToJsonObjectExample { public static void main(String args[]) { String str = '[{'No':'17','Name':'Andrew'},{'No':'18','Name':'Peter'}, {'No':'19','Name':'Tom'}]'; JSONArray array = new JSONArray(str); for(int i=0; i <array.length(); i++) { jsonobject object="array.getJSONObject(i);" system.out.println(object.getstring('no')); system.out.println(object.getstring('name')); } < pre> <p> <strong>Output:</strong> </p> <pre> 17 Andrew 18 Peter 19 Tom </pre> <p>Let's see another example.</p> <p> <strong>JsonStringToJsonObjectExample2.java</strong> </p> <pre> import org.json.*; public class JsonStringToJsonObjectExample2 { public static void main(String[] args) { String string = '{'name': 'Sam Smith', 'technology': 'Python'}'; JSONObject json = new JSONObject(string); System.out.println(json.toString()); String technology = json.getString('technology'); System.out.println(technology); } } </pre> <p> <strong>Output:</strong> </p> <pre> Sam Smith Python </pre> <hr></array.length();>
Vejamos outro exemplo.
JsonStringToJsonObjectExample2.java
pawandeep rajan
import org.json.*; public class JsonStringToJsonObjectExample2 { public static void main(String[] args) { String string = '{'name': 'Sam Smith', 'technology': 'Python'}'; JSONObject json = new JSONObject(string); System.out.println(json.toString()); String technology = json.getString('technology'); System.out.println(technology); } }
Saída:
Sam Smith Python