2011-11-13 11 views
7

私はjsonオブジェクトから値を取得しようとしています。どのように私は第3レベルのJSONオブジェクトを取得します:シングルgetでネストされたjsonデータにアクセスしますか?

JSON形式は、次のようになります。

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

コードは次のとおりです。

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

は、私は1つのGETでネストされたレベルを得ることができますか?私の鍵はどのように見えますか?

+0

何JSONライブラリをお持ちですか? –

+0

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

+0

それはクラスです、私は実際のライブラリを意味しましたが、それだけで十分です。 –

答えて

5

JSONiJ (JSON in Java)をショットします。これはJavaのバージョンJSONPathであり、基本的にはXPath構文をJSONオブジェクトにマップします(そのサブセット)。

また、他のアイデアについては、this SO questionを参照してください。 json-pathにはJavaバージョンがあり、ドット表記が使用されているようです。

もう1つの方法は、JSONObjectとMVELやOGNLなどのELブリッジを構築することです。これにより、よく知られているドット表記法が得られます。 (MVEL/JSONブリッジがあると思っていましたが、今は見つかりません)

2

これはしばらくしていますが、私は良い知らせがあります。ちょうどbeanutilsを試して、それは魅力のように動作します! あなたはJSONをマッピングするように変換したと仮定すると:(任意のパーサがあることを行うことができます)

private Map<String, Object> json; 

必要なのは、次のとおりです。

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

は楽しい:)

関連する問題