相关疑难解决方法(0)

Gson将List <String>反序列化为realmList <RealmString>

我正在使用gson进行改造,将我的json反序列化为领域对象.这在大多数情况下都非常有效.处理时遇到麻烦

RealmList(String(或任何其他基本数据类型))

由于Realm不支持RealmList,其中E不扩展Realm对象,我将String包装在RealmObject中.

public class RealmString extends RealmObject {
  private String val;

  public String getValue() {
    return val;
  }

  public void setValue(String value) {
    this.val = value;
  }
}
Run Code Online (Sandbox Code Playgroud)

我的领域对象如下

    public class RealmPerson extends RealmObject {
    @PrimaryKey
    private String userId;
    ...
    private RealmList<RealmString> stringStuff;
    private RealmList<SimpleRealmObj> otherStuff;

    <setters and getters>
   }
Run Code Online (Sandbox Code Playgroud)

SimpleRealmObj工作正常,因为它只有String元素

    public class SimpleRealmObj extends RealmObject {
    private String foo;
    private String bar;
       ...
    }
Run Code Online (Sandbox Code Playgroud)

如何反序列化stringStuff?我尝试使用gson TypeAdapter

public class RealmPersonAdapter extends TypeAdapter<RealmPerson> {
    @Override
    public void write(JsonWriter out, RealmPerson …
Run Code Online (Sandbox Code Playgroud)

java android realm gson

25
推荐指数
2
解决办法
2万
查看次数

使用自定义typeadapter,json中的jsonwriter添加对象

gson是一个很棒的图书馆 - 它运作良好.有时我有自定义要求,可以制作和注册TypeAdapters和TypeAdaptorFactories - 这也很有效.

然而令我困惑的是,如何委托回json序列化...大多数时候我需要这个用于集合,但为了说明这一点 - 假设我有一个对类,gson显然会愉快地序列化,但由于某种原因我需要自己的自定义序列化程序.好吧......如果我的配对是

public class Pair
{
    public final Object First;
    public final Object Second; 
    public Pair( Object first, Object second) {this.first = first; this.second = second};
}
Run Code Online (Sandbox Code Playgroud)

如果我为此编写了一个类型适配器 - 您希望 write函数看起来像:

public void write( JsonWriter out, Pair pair )
{
    out.beginObject();
    out.name( "first");
    out.value( pair.first );         // can't do this
    out.name( "second");
    out.value( pair.second);         // or this
    out.endObject();
}
Run Code Online (Sandbox Code Playgroud)

所以你可以看到问题 - 我不知道第一个和第二个的类型,也不知道它们是如何序列化的.我可以使用gson.toJson来序列化第一个和第二个 - 但是如果我将它们作为字符串添加到编写器中,它们将被转义.有一个gson.tojson函数,它接受一个值和一个编写器 - 但它也需要一个typetoken - 我没有.我得到的印象是,我打算从某个地方安装另一个类型的适配器 - 但是当我只有一个对象列表时......我从哪里得到它?我只是获得对象的适配器?

我有点困惑?当然这是最常见的用例?大多数自定义序列化程序将用于T或T树之类的奇怪列表,并且你真的不知道列表中的内容,除了它继承自T …

java json gson

12
推荐指数
1
解决办法
1万
查看次数

标签 统计

gson ×2

java ×2

android ×1

json ×1

realm ×1