尝试一下:
JSONObject j_user = jObj.getJSONObject("user");
String uid = j_user.getString("uid");
...
//And so on with the rest of the fields
题
因此,我将在httpresponse中收到一个JSON阵列。数组由以下对象/变量组成。
{“ sessid”:“ vxkexkmbumbbyesrlvaxrxsrxsaftfhdqd8”,“ session_name”:“ SESS88CDFB2F1C420898”,“用户”:{“ uid”:“ uid”:“ uid”:“ uid”:“ 60”,“”,“ name”:“ abc”:“ abc”,“”,“”,“”,“”,“”,“”,“”:“”“”:“”“”:“”:“”“”:“”:“”“”:“”:“”“”:“”:“”“”:“”:“”“”:“”:“”“”“”:“”:“”“”“”:“”:“”“”“”:“”:“”“”“”:“”“”“”“”“”“”“”“”“”“”“”“”“”: “,“ signature_format”:“ filtered_html”,“创建”:“ 13082976”,“访问”:“ 1386287”,“ login”:1386211,“ status”:“ 1”,“ 1”,“ timezone”,“ timezone”:null,null,“语言”:“:” “”,“图片”:null,“ data”:{“ mimemail_textonly”:0},“角色”:{“ 2”:“ Authenticated用户”,“ 5”:“中心用户”},“ field_centre_reference”:{ “ und”:[{“ nid”:“ 256”}]},“ field_first_name”:{“ und”:[{“ value”:“ web”,“格式”:null,null,“ safe_value”:“ web”} ]},“ field_surname”:{“ und”:[{“ value”:“ services”,“格式”:null,“ safe_value”:“ services”}]},“ bounce_mail_blocked”:false,“ force_pass_change” 0“}}}
现在,我想在单独的变量中接收所有这些对象/字符串。就像我想在变量字符串session_id中存储“ sessid”。等等。我可以在以下代码的帮助下以简单的方式获得前两个(即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"));
到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"));
查看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");