Область createAllFromJson выдает BEGIN_ARRAY, но является исключением BEGIN_OBJECT - PullRequest
0 голосов
/ 30 июня 2018

Я занимаюсь разработкой мобильного приложения для Android, и мне удалось использовать модификацию для загрузки файла json и сохранить его в локальном хранилище (в папке загрузки). Однако, когда я использую createAllFromJson для вставки содержимого файла json в базу данных reaml, он выдает исключение: BEGIN_ARRAY, но было BEGIN_OBJECT

Я упоминал это , но безуспешно.

Вот фрагмент кода:

JSON:

{
    "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 Ответ

0 голосов
/ 30 июня 2018

Я изменил createAllFromJson на createObjectFromJson и теперь он работает.

...