Essa pode ser uma pergunta idiota, mas qual é a maneira mais simples de ler e analisar JSON a partir da URL em Java ?
No Groovy, é uma questão de poucas linhas de código. Os exemplos de Java que eu acho ridiculamente longos (e possuem um enorme bloco de manipulação de exceções).
Tudo o que eu quero fazer é ler o conteúdo deste link .
json_decode(file_get_contents($url));
e pronto!Respostas:
Usando o artefato Maven
org.json:json
, obtive o código a seguir, que acho bastante curto. Não o mais curto possível, mas ainda utilizável.fonte
readLine
função fará o loop então, e eu tenho que concatenar as linhas em vez dos caracteres, o que é mais caro. Isso não manteria o código tão curto quanto agora. Além disso, na notação JSON não há conceito de "linhas", então por que devo lê-las como tal?IOUtils.toString(InputStream)
método do Apache commons-io . Isso deve economizar algumas linhas e responsabilidades.InputStream
. Embora o código acima possa ser curto paraorg.json
uso, verifique outras bibliotecas disponíveis - não há necessidade de escrever mais de 1 a 3 linhas de código para esta tarefa.Aqui estão algumas versões alternativas de Jackson (já que existem mais de uma maneira de você querer dados como):
E, especificamente, o caso usual (IMO) em que você deseja lidar com objetos Java, pode ser criado de uma só vez:
Outras bibliotecas como o Gson também suportam métodos de uma linha; por que muitos exemplos mostram seções muito mais longas é estranho. E pior ainda: muitos exemplos usam a biblioteca org.json obsoleta; pode ter sido a primeira coisa a surgir, mas existem meia dúzia de alternativas melhores, portanto, há muito pouco motivo para usá-lo.
fonte
java.net.URL
mas de qualquer um funciona, bem como a abundância de outras fontes (File
,InputStream
,Reader
,String
).String
exigiria que o conteúdo fosse JSON, e não a codificação textual do URI / URL para uso.A maneira mais fácil: use gson, a própria biblioteca goto json do google. https://code.google.com/p/google-gson/
Aqui está uma amostra. Eu estou indo para este site de geolocalização gratuito e analisando o json e exibindo meu CEP. (basta colocar esse material no método principal para testá-lo)
fonte
rootobj.get("zip_code").getAsString();
Se você não se importa em usar algumas bibliotecas, isso pode ser feito em uma única linha.
Inclua Apache Commons IOUtils e bibliotecas json.org .
fonte
Use HttpClient para pegar o conteúdo da URL. E, em seguida, use a biblioteca do json.org para analisar o JSON. Eu usei essas duas bibliotecas em muitos projetos e elas foram robustas e simples de usar.
Fora isso, você pode tentar usar uma biblioteca java da API do Facebook. Não tenho nenhuma experiência nessa área, mas há uma pergunta sobre o estouro de pilha relacionada ao uso de uma API do Facebook em java . Você pode considerar o RestFB como uma boa opção para uma biblioteca usar.
fonte
Eu fiz o analisador de json da maneira mais simples, aqui está
essa classe retorna o objeto json da url
e quando você deseja o objeto json, basta chamar essa classe e o método na sua classe Activity
meu código está aqui
aqui a "chave json" é denotada como a chave no seu arquivo json
este é um exemplo simples de arquivo json
Aqui "json" é a chave e "oi" é o valor
Isso fará com que seu valor json corresponda ao conteúdo da string.
fonte
É muito fácil, usando jersey-client, apenas inclua esta dependência:
Em seguida, chame-o usando este exemplo:
Em seguida, use o Gson do Google para analisar o JSON:
fonte
Eu descobri que essa é a maneira mais fácil de longe.
Use este método:
E use-o assim:
fonte
Não tenho certeza se isso é eficiente, mas esta é uma das maneiras possíveis:
Leia json do uso de URL
url.openStream()
e leia o conteúdo em uma string.construa um objeto JSON com esta string (mais em json.org )
fonte
Eu queria adicionar uma resposta atualizada aqui, já que (um pouco) as atualizações recentes no JDK tornaram um pouco mais fácil a leitura do conteúdo de uma URL HTTP. Como outros já disseram, você ainda precisará usar uma biblioteca JSON para fazer a análise, pois o JDK atualmente não contém uma. Aqui estão algumas das bibliotecas JSON mais usadas para Java:
Para recuperar o JSON de uma URL, esta parece ser a maneira mais simples de usar estritamente classes JDK (mas provavelmente não é algo que você gostaria de fazer para cargas úteis grandes), o Java 9 introduziu: https://docs.oracle.com/en/ java / javase / 11 / docs / api / java.base / java / io / InputStream.html # readAllBytes ()
Para analisar o JSON usando a biblioteca GSON, por exemplo
fonte
Aqui está uma amostra completa de como analisar o conteúdo Json. O exemplo usa as estatísticas de versões do Android (encontradas no código-fonte do Android Studio aqui , com links para aqui ).
Copie o arquivo "distributions.json" obtido de lá para res / raw, como substituto.
build.gradle
manifesto
MainActivity.kt
Como alternativa à dependência, você também pode usar isso:
e o fallback:
O resultado de executar isso:
fonte