2

組織のメンバーがモバイル デバイスでデータを表示できるようにするアプリケーションの場合、事前にフォーマットされたデータをデバイスに保存して、オフラインでも表示できるようにする必要があります。データを取得する方法は、JSON 要求と応答を介して行われます。

応答は次のようにフォーマットされます (匿名化された ofc):

[{
    "firstname":"John",
    "lastname":"Smith",
    "group":"1",
    "age":11,
    "installed":"Ja",
    "medical":"Is aan zijn linker zijde verlamd geweest.",
    "notes":"Heimee. \r\nBeschermend opgevoed. \r\nTerug getrokken persoonlijkheid.",
    "Insignes":["test", "Test2"],
    "Parents":[]
},
{
    "firstname":"Emely",
    "lastname":"Watson",
    "group":"33",
    "age":14,
    "installed":"Ja",
    "medical":"",
    "notes":"Test",
    "Insignes":["Veilig & Gezond I","CWO II","CWO III","Kampeertechnieken & Pionieren"],
    "Parents":[
        {
            "name":"ouder ouder",
            "address":"op | 0000AA Amsterdam",
            "phone1":"",
            "phone2":"0612345678",
            "mail":"example@google.com"
        }]
}]

これを保存するのに最適な方法について、いくつかの議論を読みました。

JSON 配列を SharedPreferences に保存してもよろしいですか?

JSON配列をSharedPreferencesに保存するには?

Android: Android でアプリの JSON データをオフラインで保存する最良の方法は何ですか?

Android - JSON オブジェクトを sharedPreferences に追加する方法は?

ファイルではなくSQLiteを使用する利点は何ですか?

これらを読んで、SharedPreference ファイルは sqlite よりも「高速」ですが、破損しやすいことがわかりました。SQLite はデータベースであり、データはデータベースから取得されるため、処理速度を犠牲にしてそれを使用する傾向があります。

これで、データを保存してから読み取るだけで済みます。「メインサーバー」に更新がない限り、データは変更されません。その場合、おそらくローカルデータを消去して再入力します。これらのスレッドで、JSON を sharedpreference に格納するのは簡単ですが、読みにくいと読みました。

しかし、これらの(およびその他の)議論を読んだ後、jsonを保存する最良の方法を知る/決定することに近づきません。

どんなアドバイスでも大歓迎です!

4

4 に答える 4

1

Realm や sugarORM などの ORM を試して、json の has オブジェクトをデータベースに保存できます。また、データを暗号化できる暗号オプションも提供します。これはより柔軟です。

http://www.androidauthority.com/use-android-keystore-store-passwords-sensitive-information-623779/

http://www.androidhive.info/2016/05/android-working-with-realm-database-replacing-sqlite-core-data/

サードパーティによる ORM を使用する必要がない場合は、Android キーストア キーを使用して JSON 文字列を直接暗号化し、暗号化された文字列を通常の sqlite に格納できます。

于 2017-04-14T13:09:11.867 に答える
0

最良の選択肢は、データベース アプローチを採用することです。データセットが大きいと思われる場合は、むしろ大きいことが予想されます。データベースは大量の情報を保持しますが、SQLITE の使用はお勧めしません。これは SQL ベースであり、ORM がなく、操作が面倒で時間がかかり、主に遅い (議論の余地がある) ためです。代わりに、Android と ios 用の最もホットで最新の no-sql データベースを使用します。レルムは超高速で、Java アノテーションと ORM (休止状態のような) に基づいています。Android で json を操作するには、GSON に慣れることをお勧めします。GSON は、Java オブジェクトを JSON に変換して戻すことができる Java シリアライゼーション/デシリアライゼーション ライブラリです。

Shared Preferences は、小さなキーと値のペアを保存するのに非常に便利です。保存したいキーと値のコレクションが比較的小さい場合は、SharedPreferences API を使用する必要があります。SharedPreferences オブジェクトは、キーと値のペアを含むファイルを指し、それらを読み書きするための簡単なメソッドを提供します。ここでも gson を使用する必要があります。共有設定が壊れているとは聞いたことがありません。私が知っていることは、それらが壊れやすく、アプリのインストールの存在と共に生きていることです。

結論: データセットが大きい場合は、データベース アプローチを使用して大規模なデータセットを永続化します。ここでは、メンテナンスと変更がよりスムーズになります。ただし、保存しているものが比較的小さいことがわかっている場合は、共有設定を使用し、android で json 構造を操作して、また、Google gson ライブラリを使用します。

于 2017-04-14T13:19:21.450 に答える