当前位置: 首页 > 知识库问答 >
问题:

如何使用Reformation和parceler库解析Json

郎雅昶
2023-03-14

根据这篇博文,我读过更好的方法是用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"
  }
}

共有1个答案

祁修平
2023-03-14

使用改造进行解析

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。 但是你必须在检查之前(即在之前)执行此操作。 无论如何,除