我能';t使用post-volley android从嵌套的json对象中提取数据
这是我的LoginActivity.java我能';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
{
"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