2011-11-13 14 views
7

Estoy tratando de tratar de obtener un valor de un objeto json. ¿Cómo voy a conseguir un nivel de tercer objeto JSON:¿Tiene acceso a los datos json anidados en un solo acceso?

formato JSON

parece:

feedString = {"level1":[{"level2":{"level3":{"valueIWant":10}}}]} 

Código es: niveles

JSONObject jsonFeed = new JSONObject(feedString); 
jsonFeed.get("level1.level2.level3.valueIWant"); 

¿Puedo obtener anidados en una consigue? ¿Cómo debería ser mi llave?

+0

Lo biblioteca JSON? –

+0

com.google.appengine.repackaged.org.json.JSONObject; – Lumpy

+0

Esa es la clase, quise decir la biblioteca real, pero supongo que es suficiente. –

Respuesta

5

Puede dar una oportunidad al JSONiJ (JSON in Java); es una versión Java de JSONPath y básicamente mapea (un subconjunto de) sintaxis XPath en objetos JSON.

También, vea this SO question para algunas otras ideas; parece que json-path tiene una versión de Java y usa notación de puntos.

La otra opción es construir un puente EL entre JSONObjects y algo así como MVEL u OGNL, que le daría la notación de puntos más conocida. (Pensé que existía un puente MVEL/JSON, pero no lo puedo encontrar ahora).

2

Ha pasado un tiempo, pero tengo algunas buenas noticias. Acabo de probar beanutils y funciona como un encanto! Asumiendo que tiene el JSON convierte en el mapa: (cualquier analizador puede hacer eso)

private Map<String, Object> json; 

Todo lo que necesita es:

PropertyUtils.getProperty(json, "level1.level2.level3.valueIWant") 

Diviértete :)

Cuestiones relacionadas