2011-11-13 19 views
7

मैं एक जेसन ऑब्जेक्ट से मूल्य प्राप्त करने का प्रयास करने की कोशिश कर रहा हूं। मैं एक तीसरे स्तर json वस्तु कैसे प्राप्त होगा: एक मिल मेंएकल में नेस्टेड जेसन डेटा एक्सेस करें?

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

मैं नेस्ट करवा सकता हूं स्तर:

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

कोड है:

json प्रारूप की तरह दिखता है? मेरी कुंजी कैसा दिखना चाहिए?

+0

क्या JSON पुस्तकालय:

private Map<String, Object> json; 

आप सभी की जरूरत है (किसी भी पार्सर ऐसा कर सकते हैं)? –

+0

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

+0

वह कक्षा है, मेरा मतलब वास्तविक पुस्तकालय था, लेकिन मुझे लगता है कि यह पर्याप्त है। –

उत्तर

5

आप JSONiJ (JSON in Java) एक शॉट दे सकते हैं; यह JSONPath का जावा संस्करण है और मूल रूप से जेएसओएन ऑब्जेक्ट्स पर एक्सपीएथ सिंटैक्स के मानचित्र (उपसभापति) का नक्शा है।

इसके अलावा, this SO question कुछ अन्य विचारों के लिए देखें; ऐसा लगता है कि json-path में जावा संस्करण है, और डॉट नोटेशन का उपयोग करता है।

दूसरा विकल्प JSONObjects और एमवीईएल या ओजीएनएल जैसे कुछ ईएल पुल का निर्माण करना है, जो आपको अधिक परिचित डॉट नोटेशन देगा। (मैंने सोचा था कि एक एमवीईएल/जेएसओएन पुल था, लेकिन अब इसे नहीं मिला।)

2

यह थोड़ी देर हो गया है, लेकिन मेरे पास कुछ अच्छी खबर है। बस beanutils कोशिश की और यह एक आकर्षण की तरह काम करता है! मान लिया जाये कि आप json मैप करने के लिए परिवर्तित किया है:

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

मज़े :)

संबंधित मुद्दे