同一个活动Android Studio中的两个JSON解析方法
Posted
技术标签:
【中文标题】同一个活动Android Studio中的两个JSON解析方法【英文标题】:Two JSON parse method with volley within the same activity Android Studio 【发布时间】:2021-09-24 00:50:46 【问题描述】:我一直在使用 volley 库在我的 android 活动中使用来自 URL 的 JSON 对象请求。我的活动流程应该 JSON 解析一个 URL,并获取一个包含另一个 URL 的数组。然后我想再次解析第二个 URL 并获取新数组。但是当我尝试进行第二次 JSON 解析时出现错误。这是我尝试过的代码以及收到的错误:
非常感谢您的帮助。非常感谢!
private RequestQueue mQueue;
private RequestQueue mQueueSecond;
private String linkDetails;
btnParseOne.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
JsonParse();
);
btnParseTwo.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
JsonParseSecond();
);
private void JsonParse()
String url = link;
JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null,
new Response.Listener<JSONObject>()
@Override
public void onResponse(JSONObject response)
try
JSONArray groups = response.getJSONArray("results");
if(groups.length() > 0)
JSONObject result = groups.getJSONObject(0);
linkDetails = result.getString("link");
catch (JSONException e)
e.printStackTrace();
, new Response.ErrorListener()
@Override
public void onErrorResponse(VolleyError error)
error.printStackTrace();
);
mQueue.add(request);
private void JsonParseSecond()
String urlDetails = linkDetails;
Log.d(TAG, "JsonParseSecond: new url to be parsed is: " + urlDetails); //Just to check that I got the new link from the first JsonParse method
JsonObjectRequest requestTwo = new JsonObjectRequest(Request.Method.GET, urlDetails, null,
new Response.Listener<JSONObject>()
@Override
public void onResponse(JSONObject response)
Log.d(TAG, "JsonParseSecond: Checking that the JsonParseSecond can do JsonObjectRequest with no issue");
, new Response.ErrorListener()
@Override
public void onErrorResponse(VolleyError error)
error.printStackTrace();
);
mQueueTwo.add(requestTwo);
我可以通过单击 btnParseOne 的按钮来运行 JsonParse() 的第一个方法,没有问题。然后单击 btnParseOne 后,单击 btnParseTwo 以检查我的 JsonParseSecond() 方法。但我收到以下错误:
2021-07-15 12:08:20.551 12739-12739/com.example.jsonparsetest E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.jsonparsetest, PID: 12739
java.lang.NullPointerException: Attempt to invoke virtual method 'com.android.volley.Request com.android.volley.RequestQueue.add(com.android.volley.Request)' on a null object reference
at com.example.jsonparsetest.MainActivity.JsonParseSecond(MainActivity.java:1666)
at com.example.jsonparsetest.MainActivity.access$4400(MainActivity.java:111)
at com.example.jsonparsetest.MainActivity$23.onClick(MainActivity.java:1593)
at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:174)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7656)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
【问题讨论】:
【参考方案1】:在您使用的第二种方法 JsonParseSecond() mQueueTwo.add(requestTwo);
当你声明 私有请求队列 mQueueSecond;
还将请求队列初始化为
mQueueSecond = Volley.newRequestQueue(mContext);
然后替换 mQueueTwo.add(requestTwo);与 mQueueSecond.add(requestTwo);
【讨论】:
谢谢!我忘了初始化第二个请求队列。以上是关于同一个活动Android Studio中的两个JSON解析方法的主要内容,如果未能解决你的问题,请参考以下文章
在测验中的最后一个问题之后转到 Android Studio 中的另一个活动
如何在进入不同活动的情况下不删除 Android Studio 活动中的变量?
如何根据 android studio 中的 listview 项目点击更改活动图像和文本? java 或 kotlin