Esta podría ser una pregunta tonta, pero ¿cuál es la forma más sencilla de leer y analizar JSON desde URL en Java ?
En Groovy, se trata de pocas líneas de código. Los ejemplos de Java que encuentro son ridículamente largos (y tienen un gran bloque de manejo de excepciones).
Todo lo que quiero hacer es leer el contenido de este enlace .
json_decode(file_get_contents($url));
y ¡listo!Respuestas:
Usando el artefacto Maven
org.json:json
obtuve el siguiente código, que creo que es bastante corto. No lo más corto posible, pero aún utilizable.fuente
readLine
función hará el ciclo entonces, y tengo que concatenar las líneas en lugar de los caracteres, lo cual es más costoso. Eso no mantendría el código tan corto como lo es ahora. Además, en la notación JSON no existe el concepto de "líneas", entonces, ¿por qué debería leerlas como tales?IOUtils.toString(InputStream)
método de Apache commons-io . Eso debería ahorrarle algunas líneas y responsabilidad.InputStream
. Si bien el código anterior puede ser corto para suorg.json
uso, asegúrese de verificar otras bibliotecas disponibles; no es necesario escribir más de 1-3 líneas de código para esta tarea.Aquí hay un par de versiones alternativas con Jackson (ya que hay más de una forma en que puede desear datos):
Y, específicamente, el caso habitual (IMO) en el que desea tratar con objetos Java, puede hacerse un revestimiento:
Otras bibliotecas como Gson también admiten métodos de una línea; Por qué muchos ejemplos muestran secciones mucho más largas es extraño. Y aún peor es que muchos ejemplos usan la biblioteca obsoleta org.json; Puede haber sido lo primero, pero hay media docena de alternativas mejores, por lo que hay muy pocas razones para usarlo.
fuente
java.net.URL
, pero cualquiera de los dos trabajos, así como un montón de otras fuentes (File
,InputStream
,Reader
,String
).String
requeriría que los contenidos sean JSON, y no una codificación textual de URI / URL para usar.La forma más fácil: use gson, la propia biblioteca goto json de google. https://code.google.com/p/google-gson/
Aquí hay una muestra. Voy a este sitio web de geolocalizador gratuito y analizo el json y visualizo mi código postal. (solo pon estas cosas en un método principal para probarlo)
fuente
rootobj.get("zip_code").getAsString();
Si no le importa usar un par de bibliotecas, puede hacerlo en una sola línea.
Incluya las bibliotecas Apache Commons IOUtils y json.org .
fuente
Use HttpClient para obtener el contenido de la URL. Y luego use la biblioteca de json.org para analizar el JSON. He usado estas dos bibliotecas en muchos proyectos y han sido robustas y fáciles de usar.
Aparte de eso, puede intentar usar una biblioteca Java API de Facebook. No tengo ninguna experiencia en esta área, pero hay una pregunta sobre el desbordamiento de pila relacionado con el uso de una API de Facebook en Java . Es posible que desee ver RestFB como una buena opción para una biblioteca.
fuente
He hecho el analizador json de la manera más simple, aquí está
esta clase devuelve el objeto json de la url
y cuando quieres el objeto json simplemente llamas a esta clase y al método en tu clase Activity
mi codigo esta aqui
aquí la "clave json" se denota como la clave en su archivo json
este es un ejemplo simple de archivo json
Aquí "json" es clave y "hola" es valor
Esto obtendrá su valor json para encadenar contenido.
fuente
Es muy fácil, usando jersey-client, solo incluye esta dependencia de Maven:
Luego invoque usando este ejemplo:
Luego use Gson de Google para analizar el JSON:
fuente
He encontrado que esta es la forma más fácil con diferencia.
Usa este método:
Y úsalo así:
fuente
No estoy seguro de si esto es eficiente, pero esta es una de las formas posibles:
Lea json del uso de url
url.openStream()
y lea el contenido en una cadena.construir un objeto JSON con esta cadena (más en json.org )
fuente
Quería agregar una respuesta actualizada aquí ya que (algo) las actualizaciones recientes al JDK han hecho que sea un poco más fácil leer el contenido de una URL HTTP. Como otros han dicho, aún necesitará usar una biblioteca JSON para realizar el análisis, ya que el JDK actualmente no contiene una. Estas son algunas de las bibliotecas JSON más utilizadas para Java:
Para recuperar JSON de una URL, esta parece ser la forma más sencilla de usar estrictamente clases JDK (pero probablemente no es algo que quiera hacer para grandes cargas), Java 9 introdujo: https://docs.oracle.com/en/ java / javase / 11 / docs / api / java.base / java / io / InputStream.html # readAllBytes ()
Para analizar el JSON usando la biblioteca GSON, por ejemplo
fuente
Aquí hay una muestra completa de cómo analizar el contenido de Json. El ejemplo toma las estadísticas de las versiones de Android (que se encuentra a partir del código fuente de Android Studio aquí , que une a aquí ).
Copie el archivo "distributions.json" que obtiene desde allí en res / raw, como respaldo.
build.gradle
manifiesto
MainActivity.kt
Como alternativa a la dependencia, también puede usar esto en su lugar:
y la alternativa:
El resultado de ejecutar esto:
fuente