2012-08-02 22 views
8

Tôi có một Output API như thế này:JSONObject trong JSONObject

{"user" : {"status" : {"stat1" : "54", "stats2" : "87"}}} 

tôi tạo ra một đơn giản JSONObject từ API này với:

JSONObject json = getJSONfromURL(URL); 

Sau này tôi có thể đọc dữ liệu cho tài khoản như thế này:

String user = json.getString("user"); 

Nhưng làm cách nào để lấy Dữ liệu cho stat1stat2?

Trả lời

19

JSONObject cung cấp truy cập cho một số loại dữ liệu khác nhau, bao gồm lồng nhau JSONObjectsJSONArrays, sử dụng JSONObject.getJSONObject(String), JSONObject.getJSONArray(String).

Với JSON của bạn, bạn sẽ cần phải làm một cái gì đó như thế này:

JSONObject json = getJSONfromURL(URL); 
JSONObject user = json.getJSONObject("user"); 
JSONObject status = user.getJSONObject("status"); 
int stat1 = status.getInt("stat1"); 

Note thiếu xử lý lỗi ở đây: ví dụ mã giả định sự tồn tại của các thành viên lồng nhau - bạn nên kiểm tra cho null - và không có xử lý ngoại lệ.

+0

Ý của bạn là 'người dùng JSONObject = json.getJSONObject ("người dùng") '? –

+0

@CheJami Tôi đã làm, đã sửa. cảm ơn – pb2q

1

Để truy cập vào bất động sản tại một JSON bạn có thể phân tích các đối tượng sử dụng JSON.parse và sau đó acceess thuộc tính cần thiết như:

var star1 = user.stat1; 
2
JSONObject mJsonObject = new JSONObject(response); 
JSONObject userJObject = mJsonObject.getJSONObject("user"); 
JSONObject statusJObject = userJObject.getJSONObject("status"); 
String stat1 = statusJObject.getInt("stat1"); 
String stats2 = statusJObject.getInt("stats2"); 

từ trả lời của bạn dùngtình trạng là Object nên cho rằng sử dụng getJSONObjectstat1số liệu thống kê2trạng thái khóa đối tượng để sử dụng phương thức get2nt getInt() để nhận giá trị số nguyên và sử dụng phương pháp getString() để nhận giá trị chuỗi.

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