根据这篇博文,我读过更好的方法是用parcelable而不是seralisable解析http://blog.robinchutaux.com/blog/a-smart-way-to-use-retrofit/
但是如何使用Parceler库(https://github.com/johncarl81/parceler)自定义解析?
在GSON库中,我们可以这样做:
public class GuestEntityDeserializer implements JsonDeserializer<GuestEntity> {
private static final String ID = "id";
private static final String FIRST_NAME = "firstname";
// other fields...
@Override
public GuestEntity deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context)
throws JsonParseException {
final GuestEntity guestEntity = new GuestEntity();
final JsonObject jsonObject = json.getAsJsonObject();
guestEntity.setId(jsonObject.get(ID).getAsString());
guestEntity.setFirstName(jsonObject.get(FIRST_NAME).getAsString());
guestEntity.setLastName(jsonObject.get(LAST_NAME).getAsString());
// and so on...
return guestEntity;
}
并像这样配置GsonBuilder:
final Gson gson = new GsonBuilder()
.registerTypeAdapter(GuestEntity.class, new GuestEntityDeserializer())
.create();
所以,问题是:如何使用Retrofit和Parceler库解析json字符串?例如,我需要两个具有以下模型的对象。
@Parcel
public class MatchModel {
@SerializedName("id")
private String mId;
@SerializedName("first")
private String mFirst;
@SerializedName("last")
private String mLast;
@SerializedName("ilike")
private String mIlike;
@SerializedName("created_at")
private String mCreatedAt;
@SerializedName("liketo")
private String mLiketo;
@SerializedName("firstname")
private String mFirstName;
@SerializedName("lastname")
private String mLastName;
@SerializedName("birthday")
private String mBirthday;
// getters and setters
}
我需要分析以下内容:
{
"1277": {
"id": "322",
"first": "1294",
"last": "1277",
"ilike": "1",
"created_at": "2015-07-31 18:51:47",
"liketo": "1277",
"firstname": "Alex",
"lastname": "Alexov",
"birthday": null
},
"1312": {
"id": "951",
"first": "1294",
"last": "1312",
"ilike": "1",
"created_at": "2015-08-06 15:12:29",
"liketo": "1312",
"firstname": "Roman",
"lastname": "Romanov",
"birthday": "1990-06-23"
}
}
使用改造进行解析
RestAdapter restAdapter = new RestAdapter.Builder()
.setEndpoint("url")
.setClient(new OkClient(new OkHttpClient()))
.build();
getMatchModel mMatchModel= restAdapter.create(getMatchModel.class);
Map<String, MatchModel > mMatchModelMaps = mMatchModel.MatchModel(params..);
public interface getMatchModel {
@GET("/{params}")
Map<String, MatchModel > MatchModel(@Path("params") String params);
}
Parceler Have a question? Ask it on StackOverflow. Found an issue? Please report it. In Android, Parcelables are a great way to serialize Java Objects between Contexts.Compared with traditional Serial
我一直在努力使用REST API响应处理Firebase响应。问题是我不想在Firebase中使用Android的libs,而是使用原始rest api。长话短说,Firebase的回应是: 改装接口: Gson Builder、改装Builder和RxJava: 执行此操作时,我会得到错误: 为了迭代来自服务器的对象列表,是否可以使用RxJava解决这个问题?从现在起,我期待一个数组,但fire
问题内容: 我应该如何使用Node.js解析JSON?是否有一些模块可以安全地验证和解析JSON? 问题答案: 你可以简单地使用。 JSON对象的定义是ECMAScript 5规范的一部分。node.js基于Google Chrome的V8引擎构建,该引擎遵循ECMA标准。因此,node.js也有一个全局对象。JSON 注意- 可以占用当前线程,因为它是一种同步方法。因此,如果你打算解析大型JSO
问题内容: 我想解析传入的JSON数据,例如: 我使用的代码是: 但是我无法分配任何东西给。有什么建议? 问题答案: 该响应是一个Map,具有单个元素,键为“ 212315952136472”。地图中没有“数据”键。如果要遍历所有条目,请使用以下命令: 如果您知道它是单元素地图,则可以直接访问: 而且,如果您知道ID(例如,如果您使用它来发出请求),则可以更简洁地访问该值:
我正在使用来解析Json数据。我的Json数据如下: GsonParse.java 我使用以下方法来解析此JSON数据。 我面对以下错误。
问题内容: 我正在运行一个Java程序,其中使用Java SFTP将文件从一个文件夹传输到另一个文件夹。我遇到的问题是我在Java SFTP(使用JSch)中遇到以下错误: 以下是我到目前为止的代码: 我的Cygwin已设置好,并检查netstat -a -b了它的运行(带有)。 问题答案: 你正在尝试通过将设置为来跳过主机密钥检查no。 但是你必须在检查之前(即在之前)执行此操作。 无论如何,除