2011-11-13 16 views
7

Sto provando a cercare di ottenere un valore da un oggetto JSON. Come faccio a ottenere un terzo oggetto di livello JSON:Accesso ai dati json annidati in singolo get?

formato

JSON assomiglia:

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

Codice è: i livelli

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

Posso vengo annidati in uno prendi? Come dovrebbe essere la mia chiave?

+0

Cosa biblioteca JSON? –

+0

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

+0

Questa è la classe, intendevo la libreria vera e propria, ma immagino sia sufficiente. –

risposta

5

Si potrebbe dare JSONiJ (JSON in Java) un colpo; è una versione Java di JSONPath e fondamentalmente mappe (un sottoinsieme di) sintassi XPath su oggetti JSON.

Inoltre, vedere this SO question per alcune altre idee; sembra che json-path abbia una versione Java e usi la notazione a punti.

L'altra opzione è creare un bridge EL tra JSONObjects e qualcosa come MVEL o OGNL, che fornisce la notazione di punti più familiare. (Pensavo che esistesse un bridge MVEL/JSON, ma non riesco a trovarlo ora.)

2

È passato un po 'di tempo, ma ho delle buone notizie. Ho appena provato beanutils e funziona come un fascino! Supponendo di avere il JSON convertito per mappare: (ogni parser può farlo)

private Map<String, Object> json; 

Tutto ciò che serve è:

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

Buon divertimento :)

Problemi correlati