2012-03-29 42 views
18

Tôi muốn lập trình một đối tượng JSON lồng nhau cho thiết bị Android của tôi, nhưng làm thế nào? Tôi chỉ có kinh nghiệm cơ bản với Json, vì vậy tôi sẽ đánh giá cao nếu ai đó có thể giúp tôi với đoạn mã sau:Làm thế nào để tạo một đối tượng Json lồng nhau trong Java?

{ 
"command": "login", 
"uid": "123123123", 
"params": 
    { 
    "username": "sup", 
    "password": "bros" 
    } 
} 

Edit:

Các mã sau đây không giải quyết vấn đề:

loginInformation = new ArrayList<NameValuePair>(); 

JSONObject parentData = new JSONObject(); 
JSONObject childData = new JSONObject(); 

try { 

    parentData.put("command", "login"); 
    parentData.put("uid", UID.getDeviceId()); 

    childData.put("username", username.getText().toString()); 
    childData.put("password", password.getText().toString()); 
    parentData.put("params", childData); 

} catch (JSONException e) { 
    e.printStackTrace(); 
} 

loginInformation.add(new BasicNameValuePair("content", parentData.toString())); 
+1

Bạn có cố gắng liên lạc với dịch vụ sử dụng json? Bạn có thực sự cần phải gửi cấu trúc dificult như vậy? –

+7

Bạn đang đùa tôi à? GÌ khó khăn khi gửi một đối tượng JSON lồng nhau !? – Xarialon

+1

chỉ là những gì tôi cần !! thanks @Xarialon –

Trả lời

5

Bạn cần tạo một số JSON và thêm JSON làm thông số trong số POST của mình. Để làm điều đó bạn nên có lẽ:

post.add(new BasicNameValuePair("data",json.toString()); 

Bạn có thể sử dụng org.json.JSONObject, nó được bao gồm trong Android SDK.

+1

Cảm ơn, tôi có nghĩa là lồng nhau thay vì đa chiều. :) – Xarialon

+0

@Ovidiu Latcu Vui lòng kiểm tra câu hỏi của tôi http://stackoverflow.com/questions/15171454/sending-complex-json-object – bCliks

+0

@OvidiuLatcu bạn có thể vui lòng kiểm tra câu hỏi của tôi [http://stackoverflow.com/questions/42024158/how-to-access-github-graphql-api-sử dụng-java] –

1

BasicNameValuePair là những gì bạn sử dụng để thêm thông số POST. đó là một chút không rõ ràng những gì bạn đang yêu cầu. bạn đang hỏi làm thế nào, cho rằng JSON, để gửi các giá trị param như thông số bài viết?

đầu tiên bạn cần phân tích JSON, sau đó kéo ra các thông số, sau đó thêm chúng vào các hình thức bưu điện, như thế này,

JSONObject jo = new JSONObject(jsonString); 
JSONObject joParams = jo.getJSONObject("params"); 
String username = joParams.getString("username"); 

post.add(new BasicNameValuePair("username",username); 

bạn sẽ đương nhiên muốn làm kiểm tra trên JSON để đảm bảo đối tượng params tồn tại và để đảm bảo thông số tên người dùng thoát.

0

Nếu bạn chỉ muốn gửi một khối JSON đến máy chủ, bạn không nên sử dụng cặp giá trị khóa mà chỉ đăng dữ liệu dưới dạng StringEntity.

HttpPost request = new HttpPost(api_call); 

    request.setHeader("Content-Type", "text/javascript"); 
    request.setEntity(new StringEntity(jsonString); 

    httpClient.execute(request); 
1

Tạo một Lớp mô hình cho Json, khởi tạo nó với dữ liệu của bạn. Sau đó, sử dụng Google Gson để chuyển đổi nó thành Json cũng từ Json để Quay lại đối tượng. và đây cũng là hai liên kết giúp cuộc sống của bạn dễ dàng hơn khi sử dụng Json. Trình chỉnh sửa Json trực tuyến. Bạn có thể kiểm tra xem json đã tạo có đúng định dạng hay không. http://www.jsoneditoronline.org/ Và Json để POJO tạo (Model Lớp Generator) http://www.jsonschema2pojo.org/

+0

Cảm ơn Malik! Đây là một câu hỏi rất cũ. Tôi sử dụng nó khi tôi mới bắt đầu học lập trình Android. :) – Xarialon

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