Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我能';t使用post-volley android从嵌套的json对象中提取数据_Android_Json_Post_Android Volley - Fatal编程技术网

我能';t使用post-volley android从嵌套的json对象中提取数据

我能';t使用post-volley android从嵌套的json对象中提取数据,android,json,post,android-volley,Android,Json,Post,Android Volley,这是我的LoginActivity.java { "success": true, "message": { "user": { "firstName": "aaa", "lastName": "aaa", "email": "xxx@gmail.com", "role": 1, "profileUrl": "" }, "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyIjp7ImZpcnN0TmFtZSI6ImFh

这是我的LoginActivity.java

{
"success": true,
"message": {
"user": {
  "firstName": "aaa",
  "lastName": "aaa",
  "email": "xxx@gmail.com",
  "role": 1,
  "profileUrl": ""
},
"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyIjp7ImZpcnN0TmFtZSI6ImFhYSIsImxhc3ROYW1lIjoiYWFhIiwiZW1haWwiOiJ4eHhAZ21haWwuY29tIiwicm9sZSI6MSwicHJvZmlsZVVybCI6IiJ9LCJpYXQiOjE0ODY1MjMyOTAsImV4cCI6MTQ4NjUzNDczMH0.kFHji61mqqupMSNBL_ZLnaLbK1xmFxbD6MbWa_SPlyo",
"enum": {
  "_id": "5889d3f10893a7a42243998e",
  "updatedAt": "2017-01-26T10:48:17.233Z",
  "createdAt": "2017-01-26T10:48:17.233Z",
  "__v": 0,
  "mailCategories": [
    {
      "color": [
        "Work",
        "Document",
        "Social",
        "Advertising",
        "Client"
      ],
      "value": [
        "#1ab394",
        "#EF5352",
        "#1c84c6",
        "#23c6c8",
        "#F8AC59"
      ]
    }
  ],
  "folders": [
    "Send",
    "Draft"
  ],
  "uploadsImageTypes": [
    "jpg",
    "jpeg",
    "png",
    "gif"
  ],
  "uploadsFileTypes": [
    "jpg",
    "jpeg",
    "docx",
    "pdf",
    "txt",
    "ppt",
    "png",
    "gif"
  ],
  "workOrderStatus": {
    "color": [
      "#A09580",
      "#f8ac59",
      "#41b0f6",
      "#0d71b0",
      "#1ab394",
      "#067e47",
      "#2819bc",
      "#0d08f3",
      "#ef0c34",
      "#ef9aa9",
      "#f2830b"
    ],
    "value": [
      "Draft",
      "Requested",
      "Requested Awaiting Approval",
      "Assigned",
      "Work In Progress",
      "Ready",
      "Done",
      "Closed,Completed",
      "Closed,Incompleted",
      "On Hold",
      "Open"
    ]
  },
  "priorities": {
    "color": [
      "#0B7409",
      "#CE9B9B",
      "#7CC396",
      "#CEBE99"
    ],
    "value": [
      "Hard Down",
      "High",
      "Medium",
      "Low"
    ]
  },
  "categories": [
    "Equipment",
    "Cranes",
    "Delivery Vehicles",
    "Rotating Spares"
  ],
  "projects": [
    "Vehicle New",
    "System #7865",
    "Book Shop",
    "Site"
  ],
  "maintenanceTypes": {
    "color": "#FFFFFF",
    "bg_color": [
      "#1c84c6",
      "#262626",
      "#A09580",
      "#ed5565"
    ],
    "value": [
      "Electrical",
      "Damage",
      "Safty",
      "Broken"
    ]
  },
  "assets": [
    "Conveyor Belt 1",
    "Cranes",
    "Delivery Vehicles",
    "Rotating Spares"
  ],
  "assignToUser": [
    1,
    2,
    4,
    5,
    6
  ],
  "roles": [
    "Admin",
    "Manager",
    "Technician",
    "Customer",
    "Supplier",
    "Engineer",
    "Guest"
  ]
}
}
}
公共类LoginActivity扩展了AppCompatActivity{
编辑文本un,pw;
图像按钮sbtn;
制度偏好;
字符串URL_POST=”http://10.183.183.45:6663/api/v1/“+”验证/认证“;
私人谷歌客户;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u登录);
un=(EditText)findViewById(R.id.login\u用户名);
pw=(EditText)findViewById(R.id.login\u密码);
sbtn=(图像按钮)findViewById(R.id.signinbtn);
sbtn.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
截击杆();
}
});
client=new GoogleApiClient.Builder(this.addApi(AppIndex.API).build();
}
私人空位截击柱(){
systemPreference=systemPreference.getInstance(this.getApplicationContext());
StringRequest StringRequest=新建StringRequest(Request.Method.POST、URL\u POST、new Response.Listener()){
@凌驾
公共void onResponse(字符串响应){
Log.d(“响应”,String.valueOf(响应));
JSONObject JSONObject=null;
试一试{
JSONObject msgjson=新JSONObject(响应);
String success=msgjson.getString(“success”);
String message=msgjson.getString(“message”);
JSONObject tokenObj=新的JSONObject(“标记”);
String token=tokenObj.getString(“token”);
if(msgjson.isNull(令牌)){
字符串msg=msgjson.get(“用户”).toString();
Log.d(“msg”,msg);
Toast.makeText(getApplicationContext(),msg,Toast.LENGTH_SHORT).show();
}否则{
字符串msg=msgjson.get(“message”).toString();
Log.d(“msg”,msg);
Toast.makeText(LoginActivity.this,“授权用户”,Toast.LENGTH_SHORT.show();
意图i=新意图(LoginActivity.this、MenuActivity.class);
星触觉(i);
}
}捕获(JSONException e){
e、 printStackTrace();
}
}
},new Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
日志d(“aaa”、“aaa”);
Toast.makeText(LoginActivity.this,“错误的密码或用户名”,Toast.LENGTH_SHORT.show();
}
}) {
@凌驾
受保护的映射getParams()引发AuthFailureError{
Map params=新的HashMap();
字符串email=un.getText().toString();
字符串密码=pw.getText().toString();
参数put(“电子邮件”,电子邮件);
参数put(“密码”,密码);
返回参数;
}
};
RequestQueue RequestQueue=Volley.newRequestQueue(this);
添加(stringRequest);
}
}
如何将令牌提取到字符串

public class LoginActivity extends AppCompatActivity {
EditText un, pw;
ImageButton sbtn;

SystemPreference systemPreference;

String URL_POST = "http://10.183.183.45:6663/api/v1/" + "auth/authenticate";

private GoogleApiClient client;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);

    un = (EditText) findViewById(R.id.login_username);
    pw = (EditText) findViewById(R.id.login_password);
    sbtn = (ImageButton) findViewById(R.id.signinbtn);

    sbtn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            VolleyPost();
        }
    });
    client = new GoogleApiClient.Builder(this).addApi(AppIndex.API).build();
}

private void VolleyPost() {

    systemPreference = SystemPreference.getInstance(this.getApplicationContext());

    StringRequest stringRequest = new StringRequest(Request.Method.POST, URL_POST, new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {
            Log.d("response", String.valueOf(response));

            JSONObject jsonObject = null;
            try {
                JSONObject msgjson = new JSONObject(response);
                String success = msgjson.getString("success");
                String message = msgjson.getString("message");

                JSONObject tokenObj = new JSONObject("token");
                String token = tokenObj.getString("token");

                if(msgjson.isNull(token)) {
                    String msg = msgjson.get("user").toString();
                    Log.d("msg",  msg);
                    Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_SHORT).show();
                }else {
                    String msg = msgjson.get("message").toString();

                    Log.d("msg",  msg);
                    Toast.makeText(LoginActivity.this, "Authorized User", Toast.LENGTH_SHORT).show();
                    Intent i = new Intent(LoginActivity.this, MenuActivity.class);
                    startActivity(i);

                }

            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Log.d("aaa", "aaa");
            Toast.makeText(LoginActivity.this, "Wrong password or username", Toast.LENGTH_SHORT).show();
        }
    }) {
        @Override
        protected Map<String, String> getParams() throws AuthFailureError {
            Map<String, String> params = new HashMap<String, String>();
            String email = un.getText().toString();
            String password = pw.getText().toString();
            params.put("email", email);
            params.put("password", password);

            return params;
        }
    };

    RequestQueue requestQueue = Volley.newRequestQueue(this);
    requestQueue.add(stringRequest);
}

}

您创建的json对象没有任何内容

您可以使用getAsJsonPrimitive方法

JSONObject msgjson=新JSONObject(响应); msgjson.getAsJsonPrimitive(“令牌”).getAsString()

试试这个

JSONObject msgjson = new JSONObject(response);
                String success = msgjson.getString("success");
                String message = msgjson.getString("message");

                JSONObject tokenObj = new JSONObject(message); //change to this
                String token = tokenObj.getString("token");

令牌是消息对象内的字符串 因此,您必须执行以下操作

            JSONObject jObj=new JSONObject(response);
            String success=jObj.getString("success");
            JSONObject objMsg=jObj.getJSONObject("message");

            /* get token */
            String token=objMsg.getString("token");

             /* get user data */
            JSONObject objUser=objMsg.getJSONObject("user");
            String firstName=objUser.getString("firstName");
            String lastName=objUser.getString("lastName");
            String email=objUser.getString("email");
你看到了,

JSONObject responseJSON = new JSONObject(response);
JSONObject msgObject=responseJSON.getJSONObject("message");
String token=msgObject.getString("token");

张贴你的错误log@DmsMalithDisanayake那么您应该将其标记为答案:)
 {} this denotes Object
 [] this denotes array
 "" this denotes string