質問

私のお受取配列をJSONにhttpresponseに対して.配列の構成は以下のオブジェクト/変数です。

{"sessid":"vxkEXkMBUmBByESRlvaxrxSaFTfhDqd8","session_name":"SESS88cdfb2f1c420898","user":{"uid":"60","name":"abc","theme":"","signature":"","signature_format":"filtered_html","created":"13082976","access":"1386287","login":1386211,"status":"1","timezone":null,"language":"","picture":null,"data":{"mimemail_textonly":0},"roles":{"2":"認証済みユーザー","5":"センター user"},"field_centre_reference":{"und":[{"nid":"256"}]},"field_first_name":{"und":[{"value":"web","format":null,"safe_value":"web"}]},"field_surname":{"und":[{"value":"services","format":null,"safe_value":"services"}]},"bounce_mail_blocked":false,"force_password_change":"0"}}

もっといろいを受けるすべてのこれらのオブジェクト/文字列を別の変数です。のようにしたい店の"sessid"変数文字列session_id.います。まにわsessidとsession_name)簡単な方法は以下のコードです。

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

ですが私は手伝Androidんだのかなどの他のデータを格納する変数です。今回のデータを保存することができません簡単です。

役に立ちましたか?

解決

してもいいのですが、この:

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

他のヒント

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

{ はjsonオブジェクトノード

[ はjson配列ノード

構文解析

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

構文解析データ

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


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

るパーサ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"));

チェックJacksonParser図書館、注釈をするお仕事です。では最速の解析図書館...について こちらの

編集: 一例としてだけで一つ前の質問 JacksonParser databind、コアの原因"を見つ重複ファイルAPK"?

すると、JSONを受けたときは入れ子JSON.このように図るの値の地図は地図です。お場合には、JSONObject含sessidとsession_nameらは文字列で、"ユーザ"もJSONObject、構文解析が可能なレベルです。詳しくは、 http://www.vogella.com/articles/AndroidJSON/article.html

してみてください..

 "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");
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top