相关疑难解决方法(0)

Android中字符串类型的RealmList

我在Android中使用Realm进行本地存储.我正在获得以下响应表单服务器.

[{
    "ListId": 10,
    "Names": ["Name1", "Name2", "Name3", "Name4"]
}]
Run Code Online (Sandbox Code Playgroud)

这是我的模特

   public class Model extends RealmObject {

    private int ListId;
    private RealmList<String> Names = new RealmList<String>()

    public int getListId() {
        return ListId;
    }

    public void setListId(int listId) {
        ListId = listId;
    }

    public RealmList<String> getNames() {
        return Names;
    }

    public void setNames(RealmList<String> names) {
        Names = names;
    }

}
Run Code Online (Sandbox Code Playgroud)

而我正在为ArrayList得到这个

类型参数'java.lang.String'不在其范围内; 应该扩展'io.realm.RealmObject'.

谢谢.

android realm realm-list

13
推荐指数
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万
查看次数

RoboSpice与Gson和Realm

我正在使用RoboSpice和GsonSpringAndroidSpiceService.我还想添加Realm来保存数据.

问题是,在每个对象都必须扩展realmObject,但是roboSpice中的gson试图解析realmObject而不是忽略它.

我试图添加排除状态:

Gson gson = new GsonBuilder()
        .setExclusionStrategies(new ExclusionStrategy() {

            @Override
            public boolean shouldSkipField(FieldAttributes f) {
                return f.getDeclaringClass().equals(RealmObject.class);
            }

            @Override
            public boolean shouldSkipClass(Class<?> clazz) {
                return false;
            }
        })
        .create();
Run Code Online (Sandbox Code Playgroud)

然后

    GsonHttpMessageConverter gsonHttpMessageConverter = new GsonHttpMessageConverter(gson);
Run Code Online (Sandbox Code Playgroud)

还尝试(单独)将@expose添加到对象中的字段,和

Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
Run Code Online (Sandbox Code Playgroud)

在两种方式我有同样的错误:

09-07 11:21:04.615 8443-8443/com.mm.rsApp D/OpenGLRenderer:启用调试模式0 09-07 11:21:04.620 8443-8443/com.mm.rsApp D // SpiceManager.java:1018 :11:21:04.625 main服务范围:GsonSpiceService 09-07 11:21:04.625 8443-8466/com.mm.rsApp D // SpiceManager.java:1133:11:21:04.628 Thread-16362绑定好.09-07 11:21:04.690 8443-8443/com.mm.rsApp I /时间轴:时间轴:Activity_idle id:android.os.BinderProxy@41b8f088时间:525639153 09-07 11:21:21.890 8443-8466/com. mm.rsApp D // SpiceManager.java:245:11:21:21.896 Thread-16362向服务发送请求:CachedSpiceRequest …

android gson robospice

6
推荐指数
1
解决办法
965
查看次数

Gson反序列化Realm基元列表

我正在使用带有gson的领域.我有一个模态,其中包含一个int类型字段列表.Realm不支持当前的基元列表.要解决这个问题,有一个解决方案.我创建了我的RealmInt类.

import io.realm.RealmObject;

public class RealmInt extends RealmObject {
    private int val;

    public int getVal() {
        return val;
    }

    public void setVal(int val) {
        this.val = val;
    }
}
Run Code Online (Sandbox Code Playgroud)

我有一个类似的大型模态对象..

public class Product extends RealmObject {
    @PrimaryKey
    private int productID;
    private int priority;
    private boolean isFavourite;
    .....
    .....
    .....
    private RealmList<Document> documents;
    private RealmList<ProductInfoGroup> productInfoGroups;
    private RealmList<RealmInt> categories;
Run Code Online (Sandbox Code Playgroud)

我必须将下面的json数组反序列化为Product modals.

[{
        "productID": 776,
        "categories": [
            35
        ],
        "name": "",
        "priority": 3,
        ......
        "status": 2,
        "documents": [
            {
                "documentID": 74,
                "productID": …
Run Code Online (Sandbox Code Playgroud)

android realm gson

5
推荐指数
1
解决办法
3123
查看次数

标签 统计

android ×3

gson ×3

realm ×2

java ×1

json ×1

realm-list ×1

robospice ×1