我正在使用JsonRequester库,它使用凌空从URL获取JSON数据。
我的问题是,如何从 getJson 函数内部从 onResponse 侦听器返回 JSONObject?
这是我的 JsonHelpers 类:
import android.content.Context;
import android.support.annotation.Nullable;
import com.alirezaafkar.json.requester.interfaces.Methods;
import com.alirezaafkar.json.requester.interfaces.Response;
import com.alirezaafkar.json.requester.requesters.JsonObjectRequester;
import com.alirezaafkar.json.requester.requesters.RequestBuilder;
import com.android.volley.VolleyError;
import org.json.JSONObject;
public class JSONHelper {
public static int USER_REQUEST = 0;
public JSONObject getJson(Context context, String url){
JsonObjectRequester mUserRequester;
JsonObjectListener objectListener = new JsonObjectListener();
mUserRequester = new RequestBuilder(context)
.requestCode(USER_REQUEST)
.showError(true)
.buildObjectRequester(objectListener);
mUserRequester.request(Methods.GET, url);
}
private class JsonObjectListener extends Response.SimpleObjectResponse {
@Override
public void onResponse(int requestCode, @Nullable JSONObject jsonObject) {
}
@Override
public void onErrorResponse(int requestCode, VolleyError volleyError, @Nullable JSONObject errorObject) {
//Error (Not server or network error)
}
@Override
public void onFinishResponse(int requestCode, VolleyError volleyError, String message) {
//Network or Server error
}
@Override
public void onRequestStart(int requestCode) {
//Show loading or disable button
}
@Override
public void onRequestFinish(int requestCode) {
//Hide loading or enable button
}
}
}
回调
public interface Callback {
public void onResponse(JsonObject jsonObject);
}
您需要JsonObject
时的课程
getJson(this, url, new Callback(){
public void onResponse(JsonObject jsonObject){
// Do what you want here
}
});
获取杰森
public void getJson(Context context, String url, Callback callBack){
JsonObjectRequester mUserRequester;
JsonObjectListener objectListener = new JsonObjectListener();
mUserRequester = new RequestBuilder(context)
.requestCode(USER_REQUEST)
.showError(true)
.buildObjectRequester(objectListener);
mUserRequester.request(Methods.GET, url);
}
JsonObjectListener
private class JsonObjectListener extends Response.SimpleObjectResponse {
private Callback callback;
public JsonObjectListener(Callback callBack){
this.callBack = callBack;
}
@Override
public void onResponse(int requestCode, @Nullable JSONObject jsonObject){
callback.onResponse(jsonObject);
}
}
它应该有效,告诉这是否解决了你的问题。