Okey,我试图获得一个Json响应并使用Volley将其作为字符串返回。我有一个名为getWeatherData
的方法,它返回String,这是来自JSONObjectRequest响应的JsonObject。在那个方法中,我创建了一个名为request
的JsonObjectRequest,其中包含我的API的url,它返回一个响应的JSON对象。
现在我想把{JSON对象放在{{ 1}}方法,但我无法弄清楚如何做到这一点。我试图在我的onResponse
函数中创建一个字符串,而getWeatherData
方法内部只是将该值赋给返回的JSONObject,但我得到语法错误'变量从内部类需要访问被宣布为最终' 。
onResponse
我想要的只是从public String getWeatherData(String place){
String getJsonData;
JsonObjectRequest request = new JsonObjectRequest(Utils.BASE_URL1 + place + Utils.BASE_URL2, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
getJsonData = response.toString();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d("json_retrieving-problem",error.getMessage());
}
});
方法中检索JSONObject response
,然后将该值作为字符串返回。
答案 0 :(得分:0)
如果你在同一个班级,
你可以定义一个函数,returnMyString()
喜欢,
private void returnMyString(String myString) {
//do your stuff
}
然后在JsonRequest
,
JsonObjectRequest request = new JsonObjectRequest(Utils.BASE_URL1 + place + Utils.BASE_URL2, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
//call the function defined to return string
returnMyString(response.toString());
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d("json_retrieving-problem",error.getMessage());
}
});
或者如果您想要回调,请定义一个接口并在接口中调用该方法,如this