我的服务器正在向我发送以下格式的 JSON 数据:
{
"sub":"system",
"created":1525944295496,
"exp":1526001295,
"user":{
"userId":"5af2e4f4dae7bb353ac9d9d2",
"userFirstName":"Sastra",
"userMiddleName":"Test",
"userLastName":"Creations",
"userAccountType":null,
"userOrganizationName":null,
"userEmail":"sastratestmail@gmail.com",
"userPhone":"9841987654",
"username":"system",
"userGender":"male",
"userAddress":null,
"userPassword":null,
"userRole":null,
"userStatus":null,
"userCreatedBy":null,
"userDateCreated":null,
"userDateLong":null,
"userModifiedBy":null,
"userDateModified":null,
"userIsDisabled":null,
"userTrackers":null,
"userFeatures":null,
"userCode":null,
"token":null
}
}
我正在使用以下实现,但它不起作用我可以从上面获取 sub、created、exp 数据,但不能从“user”数组中获取内部数据。我尝试使用
public void onResponse(String response) {
try {
jsonObject = new JSONObject(response);
} catch (JSONException e) {
e.printStackTrace();
}
String token = null;
try {
token = jsonObject.getString("result");
String decoded = DecodeToken.decoded(token);
JSONObject obj = new JSONObject(decoded);
String userId = obj.getString("sub");
Log.d("MyLogs", "" + decoded);
Log.d("MyLogs", "" + obj);
// Log.d("MyLogs", "" + sub);
Log.d("MyLogs", "" + userId);
// The following implementation is throwing error like
// {Above Json data} of type org.json.JSONObject cannot be converted to JSONArray
JSONArray jsonArray = new JSONArray(decoded);
// This gets you the first (zero indexed) element of the above array.
JSONObject jsonObject = jsonArray.getJSONObject(0);
String userId = jsonObject.getString("userId");
Log.d("GMap",""+userId);
} catch (JSONException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
我需要做的是从“用户”数组中获取数据。我怎样才能做到这一点。 ??
Logcat 数据:
05-10 15:21:24.752 21709-21709/com.queendevelopers.apple.androidwebsocketexample D/MyLogs: {"sub":"system","created":1525944986850,"exp":1526001986,"user":{"userId":"5af2e4f4dae7bb353ac9d9d2","userFirstName":"Sastra","userMiddleName":"Test","userLastName":"Creations","userAccountType":null,"userOrganizationName":null,"userEmail":"sastratestmail@gmail.com","userPhone":"9841987654","username":"system","userGender":"male","userAddress":null,"userPassword":null,"userRole":null,"userStatus":null,"userCreatedBy":null,"userDateCreated":null,"userDateLong":null,"userModifiedBy":null,"userDateModified":null,"userIsDisabled":null,"userTrackers":null,"userFeatures":null,"userCode":null,"token":null}}
{"sub":"system","created":1525944986850,"exp":1526001986,"user":{"userId":"5af2e4f4dae7bb353ac9d9d2","userFirstName":"Sastra","userMiddleName":"Test","userLastName":"Creations","userAccountType":null,"userOrganizationName":null,"userEmail":"sastratestmail@gmail.com","userPhone":"9841987654","username":"system","userGender":"male","userAddress":null,"userPassword":null,"userRole":null,"userStatus":null,"userCreatedBy":null,"userDateCreated":null,"userDateLong":null,"userModifiedBy":null,"userDateModified":null,"userIsDisabled":null,"userTrackers":null,"userFeatures":null,"userCode":null,"token":null}}
system
05-10 15:21:24.754 21709-21709/com.queendevelopers.apple.androidwebsocketexample W/System.err: org.json.JSONException: Value {"sub":"system","created":1525944986850,"exp":1526001986,"user":{"userId":"5af2e4f4dae7bb353ac9d9d2","userFirstName":"Sastra","userMiddleName":"Test","userLastName":"Creations","userAccountType":null,"userOrganizationName":null,"userEmail":"sastratestmail@gmail.com","userPhone":"9841987654","username":"system","userGender":"male","userAddress":null,"userPassword":null,"userRole":null,"userStatus":null,"userCreatedBy":null,"userDateCreated":null,"userDateLong":null,"userModifiedBy":null,"userDateModified":null,"userIsDisabled":null,"userTrackers":null,"userFeatures":null,"userCode":null,"token":null}} of type org.json.JSONObject cannot be converted to JSONArray
05-10 15:21:24.756 21709-21709/com.queendevelopers.apple.androidwebsocketexample W/System.err: at org.json.JSON.typeMismatch(JSON.java:111)
at org.json.JSONArray.<init>(JSONArray.java:96)
at org.json.JSONArray.<init>(JSONArray.java:108)
at com.queendevelopers.apple.androidwebsocketexample.VolleyAuthentication$1.onResponse(VolleyAuthentication.java:82)
at com.queendevelopers.apple.androidwebsocketexample.VolleyAuthentication$1.onResponse(VolleyAuthentication.java:56)
at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:67)
at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:30)
05-10 15:21:24.757 21709-21709/com.queendevelopers.apple.androidwebsocketexample W/System.err: at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:99)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:211)
at android.app.ActivityThread.main(ActivityThread.java:5371)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:945)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:740)
05-10 15:21:24.843 21709-21709/com.queendevelopers.apple.androidwebsocketexample I/Timeline: Timeline: Activity_idle id: android.os.BinderProxy@394203db time:185869367
最佳答案
org.json.JSONException: Value
JSONException
抛出该异常表示 JSON API 存在问题。
JSONArray jsonArray = new JSONArray(decoded);
JSONObject jsonObject = jsonArray.getJSONObject(0);
问题来自 getJSONObject(0);
和 JSONArray
。您应该添加 getJSONObject("user")
。
JSONObject jsonDATA= response.getJSONObject("user");
关于java - 如何在 Android 中从 JSON 数组获取任意字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50269889/