Obtenha Json do URL em Java
Neste guia, aprenderemos como obter JSON de URL em Java. Os URLs são APIs que contêm dados que você pode converter em JSON para uso posterior. Presumimos que você já esteja familiarizado com os conceitos básicos de JSON em Java.
Obter JSON de URL em Java
Existem incontáveis exemplos de URL JSON disponíveis online. Depois de ler este guia, você também pode visitar aqui e testar qualquer URL JSON. Vamos ler os dados armazenados em tais APIs e apresentá-los em nossa saída no formato JSON. Por exemplo, se abrirmos este URL de exemplo (http://ip.jsontest.com/), ele abrirá uma página da web com a seguinte saída no formato JSON.
Da mesma forma, se pegarmos este URL de exemplo (http://headers.jsontest.com/), a saída seria a seguinte.
Agora, vamos ver como podemos obter o mesmo formato JSON do URL. Pegaremos os mesmos dois exemplos acima.
Exemplo de código:
import java.io.*;
import java.net.*;
import java.nio.charset.*;
import org.json.*;
public static void main(String[] args) throws IOException, JSONException {
String url = "http://ip.jsontest.com/"; // example url which return json data
ReadJson reader = new ReadJson(); // To ReadJson in order to read from url.
JSONObject json = reader.readJsonFromUrl(url); // calling method in order to read.
System.out.println(json.toString()); // simple for printing.
}
No exemplo de código acima, dentro da função principal, armazenamos um URL dentro de uma string. Para ler os dados da URL, criamos um leitor de objetos. Chamamos o método readJsonFromUrl e o integramos ao leitor de objetos. Vamos ver onde a mágica acontece.
Dentro de readJsonFromUrl
public JSONObject readJsonFromUrl(String link) throws IOException, JSONException {
InputStream input = new URL(link).openStream();
// Input Stream Object To Start Streaming.
try { // try catch for checked exception
BufferedReader re = new BufferedReader(new InputStreamReader(input, Charset.forName("UTF-8")));
// Buffer Reading In UTF-8
String Text = Read(re); // Handy Method To Read Data From BufferReader
JSONObject json = new JSONObject(Text); // Creating A JSON
return json; // Returning JSON
} catch (Exception e) {
return null;
} finally {
input.close();
}
}
Na função acima, o link é atribuído à entrada que iniciará o processo de streaming. Para ler o texto do fluxo de entrada de caracteres, precisamos armazenar os caracteres para uma leitura eficiente. Saiba mais sobre Buffers aqui. O exemplo acima armazenará em buffer no formato UTF-8. Para ler os dados do BufferReader, criamos outra função pública, Read.
Dentro da função Ler
public String Read(Reader re) throws IOException { // class Declaration
StringBuilder str = new StringBuilder(); // To Store Url Data In String.
int temp;
do {
temp = re.read(); // reading Charcter By Chracter.
str.append((char) temp);
} while (temp != -1);
// re.read() return -1 when there is end of buffer , data or end of file.
return str.toString();
}
Dentro de Read, estamos simplesmente armazenando dados de URL dentro de uma string usando o loop do...while
. Estamos lendo caractere por caractere e armazenando cada um deles dentro de temp. Usando typecasting, temos todos os dados em caracteres dentro de str
. str
como uma string armazenada dentro de Text
na função readJsonFromUrl
é retornado. Criamos um JSON usando JSONObject
e o retornamos.
Para executar o programa acima, precisamos usar o seguinte comando.
javac -cp 'org.json.jar' ReadJson.java
java -cp 'org.json.jar' ReadJson.java
A saída para o URL de exemplo (http://ip.jsontest.com/) é a seguinte.
Haider specializes in technical writing. He has a solid background in computer science that allows him to create engaging, original, and compelling technical tutorials. In his free time, he enjoys adding new skills to his repertoire and watching Netflix.
LinkedIn