我正在用Volley发送JSONArray GET请求,并且它返回指定的JSON数组。这是我的要求:
JsonArrayRequest getRequest = new JsonArrayRequest(url,
new Response.Listener<JSONArray>()
{
@Override public void onResponse(JSONArray response) {
Log.d("Response", response.toString());
}
},
new Response.ErrorListener()
{
@Override public void onErrorResponse(VolleyError error) {
Log.d("Error.Response", error.toString());
}
}
);
VolleySingleton.getInstance(this).addToRequestQueue(getRequest); //Call to get dashboard feed
}
如您所见,我目前正在注销响应。我想解析数组,并在列表视图中显示结果。这方面的文档并不出色,就Android开发人员而言,我还是很环保的。从Volley解析JSON数组并将结果显示在列表视图中的正确方法是什么?我已经聚集了我应该使用parseNetworkResponse
,但是不确定如何实现。
我建议坚持使用GSON库进行JSON解析。这是带有嵌入式JSON处理的Volley请求的外观:
import java.io.UnsupportedEncodingException;
import com.android.volley.NetworkResponse;
import com.android.volley.ParseError;
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.Response.ErrorListener;
import com.android.volley.Response.Listener;
import com.android.volley.toolbox.HttpHeaderParser;
import com.google.gson.Gson;
import com.google.gson.JsonSyntaxException;
/**
* Volley GET request which parses JSON server response into Java object.
*/
public class GsonRequest<T> extends Request<T> {
/** JSON parsing engine */
protected final Gson gson;
/** class of type of response */
protected final Class<T> clazz;
/** result listener */
private final Listener<T> listener;
public GsonRequest(String url, Class<T> clazz, Listener<T> listener,
ErrorListener errorListener) {
super(Method.GET, url, errorListener);
this.clazz = clazz;
this.listener = listener;
this.gson = new Gson();
}
@Override
protected void deliverResponse(T response) {
listener.onResponse(response);
}
@Override
protected Response<T> parseNetworkResponse(NetworkResponse response) {
try {
String json = new String(
response.data, HttpHeaderParser.parseCharset(response.headers));
return Response.success(
gson.fromJson(json, clazz), HttpHeaderParser.parseCacheHeaders(response));
} catch (UnsupportedEncodingException e) {
return Response.error(new ParseError(e));
} catch (JsonSyntaxException e) {
return Response.error(new ParseError(e));
}
}
}
假设您有一个位于http://example.com/api/persons/的服务器方法,该方法返回一个Person的JSON数组;人如下:
public class Person {
String firstName;
String lastName;
}
我们可以这样调用上述方法:
GsonRequest<Person[]> getPersons =
new GsonRequest<Person[]>("http://example.com/api/persons/", Person[].class,
new Listener<Person[]>() {
@Override
public void onResponse(Person[] response) {
List<Person> persons = Arrays.asList(response);
// TODO deal with persons
}
}, new ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// TODO deal with error
}
});
VolleyQueue.get().add(getPersons);
最后,在响应侦听器中,我们获得了一个Person数组,可以将其转换为list并提供给ListView的适配器。
问题内容: 我使用ksoap2 lib从android客户端与SOAP Web服务进行通信。ksoap团队做的很棒,但是问题是,没有一个很好的例子说明如何在不同方面正确使用它。例如我得到以下数据的肥皂响应: 它是一个复杂的对象,或者是StatusSetting对象的集合。当我尝试获取SoapObject的属性时,只有1个属性,其中所有数据均为字符串。它也不能解析为json。令人难以置信的是,没
问题内容: 我使用以下函数通过jQuery AJAX发布表单: 它发布正常,但我无法解析响应,它记录到控制台,如下所示 我相信这是我正在寻找的回应。 但是,当我尝试执行响应对象的任何其他成员时,它就是。 任何建议表示赞赏。 问题答案: 呼唤 应该可以访问所需的数据。 现在应该显示“ 1”
其答复如下: 我相信问题出在响应前面的jsonFlickrApi上。 执行以下代码时: }
问题内容: 我无法使用Java(使用Bonita Open Solution BPM)解析SOAP响应。我有以下SOAP响应(在IBM Content Manager中搜索文档; SOAP响应返回1个匹配的文档) 我想获取文件名( ICCFileName =“ Golem_Artikel.txt” )和此文件的网址(< cm:URL value =“ http://cmwin01.ebusines
问题内容: 好的,这真的让我感到沮丧,因为我已经做过一百次了,但是这次却没有用。所以我知道我做错了,我只是想不通。 我正在使用jQuery .get例程从另一个文件加载html。我不想使用.load(),因为它总是替换我要将内容加载到其中的元素的子元素。 这是我的.get请求: 文件’info.html’是具有正确doctype的标准xhtml文件,并且体内唯一的一件事是我需要访问的一系列ul。由
下面是我在点击特定Web服务时收到的JSON响应: 我不知道哪个索引有我的期望值(我需要在确定哪个具有)后验证多个值),这是动态的。不希望使用硬编码值。并匹配,因为这将在下次更改。 对此我有两个问题: 如何将响应传递给java代码并获取具有的数组索引,以便使用此索引进行验证? 下面的代码不起作用。