2012-03-29 22 views
18

Chcę zaprogramować zagnieżdżony obiekt JSON dla mojego urządzenia z systemem Android, ale jak? Mam tylko podstawowe doświadczenie z JSON, więc byłbym wdzięczny jeśli ktoś mógłby mi pomóc z następującym kodem:Jak utworzyć zagnieżdżony obiekt Json w Javie?

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

Edit:

Poniższy kod nie rozwiązuje problemu:

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

Czy starasz się komunikować z usługi za pomocą JSON? Czy naprawdę potrzebujesz wysłać tak trudną strukturę? –

+7

Żartujesz sobie ze mnie? CO jest tak trudne w wysyłaniu zagnieżdżonego obiektu JSON !? – Xarialon

+1

właśnie to, czego potrzebowałem !! dzięki @Xarialon –

Odpowiedz

5

Musisz utworzyć JSON i dodać, że JSON jako parametr w twoim POST. Aby to zrobić należy prawdopodobnie:

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

Można użyć org.json.JSONObject, to jest wliczone w Android SDK.

+1

Dzięki, miałem na myśli zagnieżdżenie zamiast wielowymiarowości. :) – Xarialon

+0

@Ovidiu Latcu Sprawdź moje pytanie http://stackoverflow.com/questions/15171454/sending-complex-json-object – bCliks

+0

@OvidiuLatcu możesz sprawdzić moje pytanie [http://stackoverflow.com/questions/42024158/how-to-access-github-graphql-api-using-java] –

1

BasicNameValuePair służy do dodawania parametrów POST. to trochę niejasne, o co pytasz. czy pytasz, jak, biorąc pod uwagę JSON, przesłać wartości parametrów jako parametry postu?

trzeba najpierw analizować JSON, a następnie wyciągnąć parametry, a następnie dodać je do postu formy, tak,

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

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

będzie oczywiście chcesz zrobić sprawdzając na JSON, aby upewnić się, że istnieje obiekt params i zapewnia zakończenie parametru username.

0

Jeśli chcesz tylko wysłać blok JSON do serwera, nie powinieneś używać par wartości klucza, ale po prostu publikuj dane jako StringEntity.

HttpPost request = new HttpPost(api_call); 

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

    httpClient.execute(request); 
1

Utwórz klasę modelu dla Json, zainicjuj ją danymi. Następnie użyj Google Gson, aby przekonwertować go do Json również z Json do Back to the Object. a także tutaj są dwa linki, które czynią twoje życie łatwiejszym w użyciu Json. Online Json Editor. Możesz sprawdzić, czy wygenerowany json ma poprawny format, czy nie. http://www.jsoneditoronline.org/ i JSON do Pojo Generated (model Class Generator) http://www.jsonschema2pojo.org/

+0

Dzięki Malik! To było bardzo stare pytanie. Używam go, kiedy dopiero zacząłem uczyć się programowania Android. :) – Xarialon

Powiązane problemy