Я занимаюсь разработкой мобильного приложения для 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();
}
}
});
}