Android 接收json数组并保存在变量中。安卓

Android 接收json数组并保存在变量中。安卓,android,json,httpresponse,Android,Json,Httpresponse,因此,我在httpresponse中接收到一个JSON数组。数组由以下对象/变量组成 {“sessiond”:“vxkEXkMBUmBByESRlvaxrxSaFTfhDqd8”,“session\u name”:“SESS88cdfb2f1c420898”,“user”:{“uid”:“60”,“name”:“abc”,“theme”:“signature”:“signature\u format”:“filtered\u html”,“created”:“13082976”,“access”

因此,我在httpresponse中接收到一个JSON数组。数组由以下对象/变量组成

{“sessiond”:“vxkEXkMBUmBByESRlvaxrxSaFTfhDqd8”,“session\u name”:“SESS88cdfb2f1c420898”,“user”:{“uid”:“60”,“name”:“abc”,“theme”:“signature”:“signature\u format”:“filtered\u html”,“created”:“13082976”,“access”:“13862887”,“login”:1386211,“status”:“1”,“timezone”:null,“language”:“picture”:null,“picture”:null,“data”:{“mimemail\u textonly”:0},“roles”:“2”:“已验证用户”、“5”:“中心用户”},“字段”中心参考“{”und:[{”nid:“256”}”,字段名“{”und:[{”值“:“web”,“格式”:null,“安全值”:“web”}}”,字段名“{”und:“{”und:“{”值“:“服务”,“格式”:null,“安全值”:“服务”}}”,防跳邮件:false,“强制密码更改”:“0”}

现在我想在单独的变量中接收所有这些对象/字符串。比如我想在变量字符串session_id.中存储“sessiond”。等等。我可以通过以下代码以简单的方式获得前两个(即sessiond和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);
但由于我是安卓的noob,我不知道如何将其余数据保存在变量中。即将到来的数据无法以简单的方式保存。

尝试以下方法:

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

查看JacksonParser库,它提供的注释使您的工作变得非常简单。它是最快的解析库之一…您可以拥有它

编辑: 作为一个例子,你可以看看我前面的一个问题

{
表示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": { // 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"));
试试这个

得到

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

您应该注意到,您收到的JSON是一个嵌套的JSON。Map的一个值也是一个Map,这就像一个Map一样。 在您的例子中,有一个JSONObject包含sessiond和session_name,而它只是一个字符串,但是“user”也是一个JSONObject,所以您可以逐级解析它。 有关更多详细信息,请阅读

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