2011-11-13 33 views
7

Tôi đang cố gắng để có được một giá trị ra khỏi một đối tượng json. Làm thế nào tôi sẽ nhận được một đối tượng mức json thứ ba:Truy cập dữ liệu json lồng nhau trong lần nhận đơn lẻ?

định dạng

json trông giống như:

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

Mã là: mức

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

Tôi có thể được lồng trong một nhận được? Phím của tôi trông như thế nào?

+0

gì thư viện JSON? –

+0

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

+0

Đó là lớp học, ý tôi là thư viện thực sự, nhưng tôi đoán thế là đủ rồi. –

Trả lời

5

Bạn có thể cung cấp cho JSONiJ (JSON in Java) một ảnh; đó là phiên bản Java của JSONPath và về cơ bản là bản đồ (một tập con của) XPath cú pháp lên các đối tượng JSON.

Ngoài ra, hãy xem this SO question đối với một số ý tưởng khác; có vẻ như json-path có phiên bản Java và sử dụng ký hiệu chấm.

Tùy chọn khác là xây dựng cầu nối EL giữa JSONObject và một cái gì đó như MVEL hoặc OGNL, sẽ cung cấp cho bạn ký hiệu chấm quen thuộc hơn. (Tôi nghĩ rằng có một cây cầu MVEL/JSON, nhưng không thể tìm thấy nó ngay bây giờ.)

2

Đã lâu rồi, nhưng tôi có một số tin vui. Chỉ cần thử beanutils và nó hoạt động như một sự quyến rũ! Giả sử bạn có json chuyển đổi sang bản đồ: (bất cứ phân tích cú pháp có thể làm điều đó)

private Map<String, Object> json; 

Tất cả bạn cần là:

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

Have fun :)

Các vấn đề liên quan