Vra

So ek ontvang 'n JSON-skikking in 'n httprespons.Die skikking bestaan ​​uit die volgende voorwerpe/veranderlikes.

{"sessid":"vxkEXkMBUMBByESRlvaxrxSaFTfhDqd8","session_name":"SESS88cdfb2f1c420898","gebruiker":{"uid":"60","naam":"abc","tema":"","handtekening":" ","signature_format":"filtered_html","created":"13082976","access":"1386287","login":1386211,"status":"1","tydsone":null,"language": "","picture":null,"data":{"mimemail_textonly":0},"roles":{"2":"geverifieerde gebruiker","5":"sentrumgebruiker"},"field_centre_reference":{ "und":[{"nid":"256"}]},"field_first_name":{"und":[{"value":"web","format":null,"safe_value":"web"} ]},"field_surname":{"und":[{"value":"dienste","format":null,"safe_value":"dienste"}]},"bounce_mail_blocked":false,"force_password_change":" 0"}}

Nou wil ek al hierdie voorwerpe/stringe in aparte veranderlikes ontvang.Soos ek die "sessid" in 'n veranderlike String session_id wil stoor.En so aan.Ek kan die eerste twee kry (d.w.s.sessid en session_name) op 'n eenvoudige manier met behulp van die volgende kode.

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);

Maar aangesien ek 'n noob by Android is, weet ek nie hoe om die res van die data in veranderlikes te laat stoor nie.Die komende data kan nie op 'n eenvoudige manier gestoor word nie.

Was dit nuttig?

Oplossing

Probeer met hierdie:

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

Ander wenke

{ // 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

{ verteenwoordig json voorwerp node

[ verteenwoordig json skikking node

Om te ontleed

 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);

Om data te ontleed

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


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

Om field_centre_reference te ontleed

 "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"));

Kyk na JacksonParser-biblioteek, dit bied aantekeninge wat jou werk so maklik maak.En dit is een van die vinnigste ontleedbiblioteke ...Jy kan dit kry hier

Wysig:As voorbeeld kan jy na een van my vorige vrae kyk JacksonParser-databinding en kernoorsaak "Duplikaatlêer vir APK gevind"?

Jy moet oplet dat die JSON wat jy ontvang het 'n geneste JSON is.Dit is soos 'n kaart dat een van die waardes van Map ook 'n kaart is.In jou geval is daar 'n JSONObject wat sessid en session_name bevat terwyl dit slegs 'n string is, maar die "gebruiker" is ook 'n JSONObject, so jy kan dit vlak vir vlak ontleed.Vir meer besonderhede, kan jy lees http://www.vogella.com/articles/AndroidJSON/article.html

Probeer hierdie..

Kry

 "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");
Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top