Me gustaría analizar datos de JSON que son de tipo String
. Estoy usando Google Gson .
Yo tengo:
jsonLine = "
{
"data": {
"translations": [
{
"translatedText": "Hello world"
}
]
}
}
";
y mi clase es:
public class JsonParsing{
public void parse(String jsonLine) {
// there I would like to get String "Hello world"
}
}
Respuestas:
Este es un código simple para hacerlo, evité todas las comprobaciones pero esta es la idea principal.
Para hacer que el uso sea más genérico, encontrará que los javadocs de Gson son bastante claros y útiles.
fuente
En mi primera aplicación gson evité usar clases adicionales para capturar valores principalmente porque uso json para cuestiones de configuración
a pesar de la falta de información (incluso la página de gson), eso es lo que encontré y usé:
empezando desde
Cada vez que gson ve un {}, crea un mapa (en realidad un gson StringMap)
Cada vez que gson ve un '', crea una cadena
Cada vez que gson ve un número, crea un Doble
Cada vez que gson ve un [], crea una ArrayList
Puede usar estos hechos (combinados) para su ventaja
Finalmente este es el código que hace la cosa
fuente
Lo más simple generalmente es crear una jerarquía de Objetos coincidente, así:
y luego enlazar usando GSON, atravesar la jerarquía de objetos a través de campos. Agregar captadores y establecedores no tiene sentido para los contenedores de datos básicos.
Entonces algo como:
fuente
Puede crear clases de Java correspondientes para los objetos json. El entero, los valores de cadena se pueden asignar como es. Json se puede analizar así:
Aquí hay un ejemplo: http://rowsandcolumns.blogspot.com/2013/02/url-encode-http-get-solr-request-and.html
fuente
Puede usar una clase separada para representar el objeto JSON y usar
@SerializedName
anotaciones para especificar el nombre del campo para capturar para cada miembro de datos:Luego puede hacer el análisis en su método parse () usando un
Gson
objeto:Con este enfoque, puede reutilizar la
Response
clase para agregar cualquier otro campo adicional para recoger otros miembros de datos que desee extraer de JSON, en caso de que desee realizar cambios para obtener resultados para, por ejemplo, múltiples traducciones en una sola llamada, o para obtener una cadena adicional para el idioma de origen detectado.fuente
Una forma sería crear un JsonObject e iterar a través de los parámetros. Por ejemplo
Luego puede extraer valores de frijol como:
Espero que esto ayude.
fuente
Usando Gson para resolver
crearía una clase para parámetro individual en la cadena json. Alternativamente, puede crear una clase principal llamada "Datos" y luego crear clases internas de manera similar. Creé clases separadas para mayor claridad.
Las clases son las siguientes.
En la clase JsonParsing llamamos al método "parse",
gson.fromJson(jsonLine, Data.class)
que convertirá la Cadena en objetos java usando Reflection.Una vez que tenemos acceso al objeto "Datos" podemos acceder a cada parámetro individualmente.
No tuve la oportunidad de probar este código ya que estoy lejos de mi máquina de desarrollo. Pero esto debería ayudar.
Algunos buenos ejemplos y artículos.
http://albertattard.blogspot.com/2009/06/practical-example-of-gson.html
http://sites.google.com/site/gson/gson-user-guide
Código
fuente
private String translatedText
sin violar el control de acceso, por lo que no hay forma defromJSON
configurarlo en JVM que no hayan optado por la reflexión pisoteando todo el control de acceso.Un ejemplo simple para analizar un JSON como este
fuente
En primer lugar, genere Getter and Setter utilizando el siguiente sitio de análisis
http://www.jsonschema2pojo.org/
Ahora usa Gson
Ahora use objeto para obtener valores como datos, translationText
fuente
Puede usar una consulta JsonPath para extraer el valor. ¡Y con JsonSurfer, respaldado por Gson, su problema puede resolverse simplemente con dos líneas de código!
fuente
Código de una línea:
fuente