我一直在遵循其他答案,但有一个丢失的步骤,我找不到是导致调用成功,但数据没有被正确解析,因为我进行的第一次调用返回了一个对象列表,但只返回了一个对象,这是全空的
MyModel.java
public class MyModel {
@SerializedName("url")
private String mUrl;
@SerializedName("name")
private String mName;
@SerializedName("description")
private String mDescription;
}
myModelDeserializer.java
public class MyModelTypeAdapter implements JsonDeserializer<ArrayList<MyModel>>{
@Override
public ArrayList<MyModel> deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
ArrayList<MyModel> objects = new ArrayList<>();
if(json.isJsonArray()){
for(JsonElement e : json.getAsJsonArray()){
objects.add((MyModel)context.deserialize(e,MyModel.class));
}
}else if(json.isJsonObject()){
objects.add((MyModel)context.deserialize(json,MyModel.class));
}
return objects;
}
}
Gson gson = new GsonBuilder()
.registerTypeAdapter(new TypeToken<ArrayList<MyModel>>() {}.getType(), new MyModelTypeAdapter())
.create();
restAdapter = new RestAdapter.Builder()
.setEndpoint(BuildConstants.BASE_URL)
.setConverter(new GsonConverter(gson))
.setClient(new OkClient(okHttpClient))
.setLogLevel(RestAdapter.LogLevel.FULL)
.build();
@GET(URLConstants.LIST_URL)
void getData(Callback<ArrayList<MyModel>> callback);
{
"places": [
{
"url": "www.google.com",
"name": "Google",
"description": "Search engine"
},
{
"url": "www.Facebook.com",
"name": "Facebook",
"description": "Social Network"
},
{
"url": "www.amazon.com",
"name": "Amazon",
"description": "Shopping"
}
]
}
首先创建一个POJO类来处理JSON。您可以使用jsonschema2pojo为您的JSON创建pojo类:
public class MyModel {
@Expose
private List<Place> places = new ArrayList<Place>();
/**
*
* @return
* The places
*/
public List<Place> getPlaces() {
return places;
}
/**
*
* @param places
* The places
*/
public void setPlaces(List<Place> places) {
this.places = places;
}
}
public class Place {
@Expose
private String url;
@Expose
private String name;
@Expose
private String description;
/**
*
* @return
* The url
*/
public String getUrl() {
return url;
}
/**
*
* @param url
* The url
*/
public void setUrl(String url) {
this.url = url;
}
/**
*
* @return
* The name
*/
public String getName() {
return name;
}
/**
*
* @param name
* The name
*/
public void setName(String name) {
this.name = name;
}
/**
*
* @return
* The description
*/
public String getDescription() {
return description;
}
/**
*
* @param description
* The description
*/
public void setDescription(String description) {
this.description = description;
}
}
接下来,创建一个restadapter,如下所示:
public class SimpleRestClient {
private SimpleRestApi simpleRestApi;
public SimpleRestClient() {
RestAdapter restAdapter = new RestAdapter.Builder()
.setLogLevel(RestAdapter.LogLevel.FULL)
.setEndpoint(Constants.BASE_URL)
.build();
simpleRestApi = restAdapter.create(SimpleRestApi.class);
}
public SimpleRestApi getSimpleRestApi() {
return simpleRestApi;
}
}
现在创建api接口。这里我们设置POJO类来处理json响应:
public interface SimpleRestApi {
@GET("Enter URL")
public void getSimpleResponse(Callback<MyModel> handlerCallback);
}
simpleRestApi = new SimpleRestClient().getSimpleRestApi();
simpleRestApi.getSimpleResponse(new Callback<MyModel>() {
@Override
public void success(MyModel responseHandler, Response response) {
// here you can get your url, name and description.
}
@Override
public void failure(RetrofitError error) {
progress.dismiss();
Log.e("CLASS", "JSON: " + error.getCause());
}
});
客户端在关于 JSON 数组和 JSON 对象的处理和定义方面总是令人疑惑不已。尤其是由空对象和对象数组引起的问题。本节会展示一些 Elasticsearch JSON API 常见的数据格式,还会说明如何以 PHP 的语法来表达这些数据格式。 空对象 Elasticsearch API 在几个地方使用了空对象,这会对 PHP 造成影响。不像其它的语言,PHP 没有一个简便的符号来表示空对象,而许
我有一个包含对象和数组的嵌套数据结构。如何提取信息,即访问特定或多个值(或键)? 例如: 如何访问中第二个项目的?
问题内容: 我有一个包含对象和数组的嵌套数据结构。如何提取信息,即访问特定或多个值(或键)? 例如: 如何访问中的第二项? 问题答案: Preliminaries JavaScript只有一种可以包含多个值的数据类型: Object 。一个 阵列 是对象的一种特殊形式。 (普通)对象具有以下形式 数组具有以下形式 数组和对象都公开一个结构。数组中的键必须是数字,而任何字符串都可以用作对象中的键。键
来自API的Im有两个不同的响应。然后我判断对象,但是我如何将消息的内容返回到字符串呢?下面的示例返回Exception: Json响应: Json响应: 模型:
类似于Jersey:带有1个元素的Json数组被序列化为object,但在客户端。例如,我收到一个JSON对象,其中一个字段是一个数组,但如果只有一个元素,它就是一个单独的对象。 对 我正在使用 Jersey/Genson 解析/取消编组 JSON。当然,如果JSON与目标类不匹配,我会收到错误(例如) 我已经阅读了很多关于这个错误以及如何在服务器端创建JSON对象时如何避免的信息,但是我没有发现
我使用Nodejs,有一个对象包含一个object数组(API请求的结果)和一个简单的值数组。 它们看起来是这样的: 如何将包含对象数组的对象与简单数组进行比较? 我要找的是,从简单数组中获取ID,并将它们与另一个“复杂”对象进行比较,以检索属性以及简单数组中的相应ID和另一个对象属性,然后将结果存储在一个对象数组中。 简单来说,我希望有这样的结果: 当从API请求中检索“复杂”对象时,我尝试了以