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

领域createAllFromJson抛出BEGIN_ARRAY但BEGIN_OBJECT异常

章昊
2023-03-14

我正在开发一个android移动应用程序,我能够使用Registfit下载一个json文件,并将其保存在本地存储(下载文件夹下)。但是,当我使用createAllFromJson将json文件的内容插入到reaml数据库时,它会抛出异常:BEGIN_ARRAY but was BEGIN_OBJECT

我提到了这一点,但运气不好。

{
    "id": "2.1",
    "description": "Initial release",
    "version_external_id": "",
    "released": false,
    "source": {
        "created_on": "2018-01-08T13:02:37.017",
        "name": "Classification",
    },
    "items": [
        {
            "type": "Item",
            "id": "1",
            "display_name": "TV",
            "descriptions": "Household item",
        },
        {
            "type": "Item",
            "id": "2",
            "display_name": "CD Player",
            "descriptions": "Household item",
        }
    ]
}

型号:

public class ItemList extends RealmObject {

    @SerializedName("items")
    private RealmList<Item> getItems;
}

public class Item extends RealmObject
{
    private String id;
    private String type;
    private String display_name;
    private String descriptions;
//getter and setters...
}

方法读取json并将数据插入领域数据库

private void populateItemList() {
        Realm realm = Realm.getDefaultInstance();
        realm.executeTransaction(new Realm.Transaction() {
            @Override
            public void execute(Realm realm) {
                File file = new File(
                        Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS),"items.json");
                try {
                    FileInputStream stream = new FileInputStream(file);
                realm.createAllFromJson(ItemList.class, stream);

                }catch (FileNotFoundException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    if(realm.isInTransaction())
                        realm.cancelTransaction();
                    e.printStackTrace();
                }
            }
        });
    }

共有1个答案

袁晟
2023-03-14

我将createAllFromJSON更改为createObjectFromJSON,现在可以工作了。

 类似资料:
  • 我对GSON非常陌生, 几天前有人建议使用GSON,我在这里寻求一些帮助 我正在尝试分析此响应,但收到了所述错误。。 我只是得到了“状态”部分,但得到了错误。 对我的模特来说。

  • 问题内容: 我正在尝试解析这样的JSON字符串 进入对象列表。 这是我正在使用的对象类。 但这让我着迷 有什么想法我应该如何解决? 问题答案: 问题是你要告诉你具有你类型的对象。你不知道 你有一系列类型的对象。你不能只是尝试像这样投射结果并期望它神奇地工作;) 《用户指南》介绍了如何处理此问题: https://github.com/google/gson/blob/master/UserGuid

  • 我正在尝试从XML文件中提取数据。将XML转换为JSON后,我无法访问数据。我正在用GSON解析数据。 这段代码给了我一个错误。 有什么建议吗?提前谢谢。 这是JSON内容: 这是以下类:

  • 我不熟悉GSON和改装,这是我的输出模型(仅供参考结构), 这是我的输出 这是我的改装代码 应为BEGIN_对象,但为BEGIN_数组“ 我尝试过用List替换RootObject

  • 我将请求映射到类,如下所示: 有人能解释为什么我在请求中的数组没有与类A中的数组映射吗?

  • 我正在通过改型和RXAndroid与来自android的REST API进行交互,我遇到了一个问题。 当我向我的“api/users/{id}/{id}/classes”发送GET请求时,我的api会以用户类列表作出响应,如下所示: 我的界面如下所示: 我从片段中这样称呼它: 我的类对象以及getter和setter如下所示: gson不应该看到“类”:[]数组并从中解析对象吗?我做错了什么