2012-03-29 11 views
18

Ich möchte ein geschachteltes JSON-Objekt für mein Android-Gerät programmieren, aber wie? Ich habe nur grundlegende Erfahrung mit Json, so würde ich mich freuen, wenn mir jemand mit dem folgenden Code helfen könnte:Wie mache ich ein verschachteltes Json-Objekt in Java?

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

Edit:

Der folgende Code löst das 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())); 
+1

Haben Sie versuchen, mit Service mit json zu kommunizieren? Müssen Sie wirklich so schwierige Struktur senden? –

+7

Willst du mich verarschen? WAS ist so schwierig beim Senden eines verschachtelten JSON-Objekts !? – Xarialon

+1

genau was ich brauchte !! Danke @Xarialon –

Antwort

5

Sie müssen einen JSON erstellen und diesen JSON als einen Parameter in Ihrem POST hinzufügen. Um dies zu tun, sollten Sie wahrscheinlich:

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

Sie könnten org.json.JSONObject verwenden, ist es in der Android SDK enthalten.

+1

Danke, ich meinte verschachtelt statt multidimensional. :) – Xarialon

+0

@Ovidiu Latcu Bitte überprüfen Sie meine Frage http://StackOverflow.com/Questions/15171454/Sending-Complex-JsonObject – bCliks

+0

@OvidiuLatcu können Sie bitte überprüfen Sie meine Frage [http://StackOverflow.com/Questions/42024158/how-to-access-github-graphql-api-using-java] –

1

BasicNameValuePair verwenden Sie, um POST-Parameter hinzuzufügen. es ist ein wenig unklar, was Sie fragen. Fragst du dich, wie man JSON die Param-Werte als Post-Parameter übergeben kann?

müssen Sie zuerst die JSON analysieren, dann die Parameter herausziehen, so dass sie dann in Form Post hinzufügen, wie diese,

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

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

Sie natürlich wollen auf dem JSON zu tun Überprüfung der um sicherzustellen, params-Objekt existiert und um sicherzustellen, dass der username-Parameter beendet wird.

0

Wenn Sie nur einen JSON-Block an den Server senden möchten, sollten Sie keine Schlüsselwertpaare verwenden, sondern die Daten einfach als StringEntity posten.

1

Erstellen Sie eine Modellklasse für den Json, initialisieren Sie diese mit Ihren Daten. Dann benutze Google Gson, um es auch in Json von Json zu Back in das Objekt zu konvertieren. und auch hier sind zwei Links, die Ihr Leben einfacher für die Verwendung von Json machen. Online-JSON-Editor. Sie können überprüfen, ob der generierte JSON im richtigen Format ist oder nicht. http://www.jsoneditoronline.org/ Und Json Pojo generiert (Model-Klasse Generator) http://www.jsonschema2pojo.org/

+0

Danke Malik! Das war eine sehr alte Frage. Ich benutze es, wenn ich gerade angefangen habe, Android-Programmierung zu lernen. :) – Xarialon

Verwandte Themen