Frage

Also erhalte ich ein JSON -Array in einer HttPresponse. Das Array besteht aus den folgenden Objekten/Variablen.

{"sessid":"vxkEXkMBUmBByESRlvaxrxSaFTfhDqd8","session_name":"SESS88cdfb2f1c420898","user":{"uid":"60","name":"abc","theme":"","signature":" "," Signature_Format ":" filtered_html "," erstellt ":" 13082976 "," Access ":" 1386287 "," Login ": 1386211," Status ":" 1 "," Timezone ": Null," Sprache ": "", "bild": null, "data": {"mimemail_textonly": 0}, "Rollen": {"2": "Authentifizierter Benutzer", "5": "Center User"}, "field_centre_reference": {{ "und": [{"nid": "256"}]}, "field_first_name": {"und": [{"Wert": "Web", "Format": null, "safe_value": "web"} ]}, "field_surname": {"und": [{"value": "dienste", "Format": null, "safe_value": "dienste"}]}, "bounce_mail_blocked": false, "crossword_change": ":" 0 "}}

Jetzt möchte ich all diese Objekte/Zeichenfolgen in separaten Variablen empfangen. Wie ich die "Sessid" in einer variablen String Session_id speichern möchte. Usw. Mit Hilfe des folgenden Code kann ich die ersten beiden (dh Sessid und Session_name) auf einfache Weise bekommen.

response = client.execute(httppost);

BasicResponseHandler handler = new BasicResponseHandler();
String data = handler.handleResponse(response);
jObj = new JSONObject(data);

sessid = jObj.getString("sessid");
Log.d("sessid obj", sessid);
session_name = jObj.getString("session_name");
Log.d("session_name", session_name);

Aber da ich bei Android ein Noob bin, weiß ich nicht, wie ich den Rest der Daten in Variablen speichern kann. Die bevorstehenden Daten können nicht einfach gespeichert werden.

War es hilfreich?

Lösung

Versuchen Sie es damit:

 JSONObject j_user = jObj.getJSONObject("user");
 String uid = j_user.getString("uid");
 ...
 //And so on with the rest of the fields

Andere Tipps

{ // json object node 
    "sessid": "vxkEXkMBUmBByESRlvaxrxSaFTfhDqd8",
    "session_name": "SESS88cdfb2f1c420898",
    "user": { // json object user 
        "uid": "60", // string 
        "name": "abc",
        "theme": "",
        "signature": "",
        "signature_format": "filtered_html",
        "created": "13082976",
        "access": "1386287",
        "login": 1386211,
        "status": "1",
        "timezone": null,
        "language": "",
        "picture": null,
        "data": { // json object data
            "mimemail_textonly": 0 //string
        },
        ....// rest of the json

{ Repräsentiert JSON -Objektknoten

[ repräsentiert den JSON -Array -Knoten

Analysieren

 JSONObject jObj = new JSONObject(load());
 String sessid = jObj.getString("sessid");
 Log.d("sessid obj", sessid);
 JSONObject user = jObj.getJSONObject("user");
 String uid = user.getString("uid"); 
 Log.d("sessid obj", uid);

Daten analysieren

 "data": {
        "mimemail_textonly": 0
    },


   JSONObject data= user.getJSONObject("data");
   Log.i(".......",""+data.getString("mimemail_textonly"));

Zu Parser field_centre_reference

 "field_centre_reference": { // json object field_centre_reference
            "und": [  // json array und
                {        // json  object node 
                    "nid": "256" //string
                }
            ]
        },

  JSONObject field= user.getJSONObject("field_centre_reference");
  JSONArray jr = field.getJSONArray("und");
  JSONObject jb1 = (JSONObject) jr.get(0);
  Log.i(".......",""+jb1.getString("nid"));

Schauen Sie sich die JacksonParser -Bibliothek an. Sie bietet Anmerkungen, die Ihre Arbeit so einfach machen. Und es ist eine der schnellsten Parsing -Bibliotheken ... Sie können es haben hier

Bearbeiten:Als Beispiel können Sie sich eine meiner vorherigen Frage ansehen JacksonParser Databind und Core Ursache "Fund doppelte Datei für APK"?

Sie sollten feststellen, dass der JSON, den Sie erhalten haben, ein verschachtelter JSON ist. Es ist wie eine Karte, dass einer der Wert der Karte auch eine Karte ist. In Ihrem Fall gibt es ein JSONObject, der Sessid und Session_Name nur String enthält, aber der "Benutzer" ist auch ein JSONObject, sodass Sie es auf Ebene analysieren können. Für weitere Details können Sie lesen http://www.vogella.com/articles/androidjson/article.html

Versuche dies..

Bekommen

 "user": {
        "uid": "60",

JSONObject obj_user = jObj.getJSONObject("user");
String uid = obj_user.getString("uid");

 "user": {
            "uid": "60",
"data": {
            "mimemail_textonly": 0
        }

JSONObject obj_data = jObj.getJSONObject("data");
String mimemail_textonly = obj_user.getString("mimemail_textonly");
JSONObject obj_roles = jObj.getJSONObject("roles");
String two = obj_roles.getString("2");

"field_centre_reference": {
            "und": [
                {
                    "nid": "256"           

JSONObject obj_field_centre_reference = jObj.getJSONObject("field_centre_reference");
JSONArray ary_und = obj_field_centre_reference.getJSONArray("und");
JSONObject objve = ary_und.getJSONObject(0);
String nid= objve.getString("nid");
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top