22

I want to program a nested JSON Object for my Android device, but how? I have only basic experience with Json, so I would appreciate if someone could help me with the following code:

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

Edit:

The following code does solve the problem:

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()));
Aerial
  • 1,185
  • 4
  • 20
  • 42

4 Answers4

6

You need to create a JSON, and add that JSON as a parameter in your POST. To do that you should probably :

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

You could use org.json.JSONObject, it is included in the Android SDK.

Ovidiu Latcu
  • 71,607
  • 15
  • 76
  • 84
1

Create a Model Class for the Json, initialize it with your data. Then use Google Gson to convert it toJson also from Json to Back to the Object. and also here are two links which make your life more Easier for using Json. Online Json Editor. You can check that generated json is in the correct format or not. http://www.jsoneditoronline.org/ And Json to POJO Generated (Model Class Generator) http://www.jsonschema2pojo.org/

Malik Umar
  • 832
  • 6
  • 13
1

BasicNameValuePair is what you use to add POST parameters. It's a little unclear what you are asking. are you asking how, given that JSON, to submit the param values as post parameters?

You need to first parse the JSON, then pull out the parameters, then add them to the form post, like this,

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

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

You will of course want to do checking on the JSON to ensure the params object exists, and to ensure the username parameter exits.

Nimantha
  • 6,405
  • 6
  • 28
  • 69
Jeffrey Blattman
  • 22,176
  • 9
  • 79
  • 134
0

If you just want to send a block of JSON to the server you should not use key value pairs but just post the data as a StringEntity.

    HttpPost request = new HttpPost(api_call);

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

    httpClient.execute(request);
Bobbake4
  • 24,509
  • 9
  • 59
  • 94