2016-09-15 12 views
0

以下は、私がSQLliteデータベースに保存したいカスタムクラスです。私は格納してCalendarフィールドstartTimeendTime全体を取得し、後でCalendarタイプのすべてのフィールドを使用できるようにしたいと思います。AndroidのSQLLiteデータベースにカレンダーフィールドを含むカスタムオブジェクトを保存する方法は?

私はSQLLiteストアStringIntを知っています。 SQLLiteでカスタムクラスを保存する方法はありますか?

Gsonライブラリが助けになることがわかっていますが、以下のコードは正しいですか?

public class Model_BlockTimes { 

Calendar startTime; 
Calendar endTime; 


public Model_BlockTimes() { 
} 

public Model_BlockTimes(Calendar startTime, Calendar endTime) { 
    this.startTime = startTime; 
    this.endTime = endTime; 
} 

public Calendar getStartTime() { 
    return startTime; 
} 

public void setStartTime(Calendar startTime) { 
    this.startTime = startTime; 
} 

public Calendar getEndTime() { 
    return endTime; 
} 

public void setEndTime(Calendar endTime) { 
    this.endTime = endTime; 
} 
} 

私のテストコードはGsonとの間で変換され、動作しません。これは

public String convertToJson(Model_BlockTimes times) { 

    Gson gson = new Gson(); 
    String resp = gson.toJson(times); 

    return resp; 
} 

がどのようにバックModel_BlockTimesにJSONから戻って変換するには?:よう

は私が保存され、sqlliteから取得する機能convertToJson(...)からの応答を格納することができます**?

+0

日付を文字列形式で変換し、データベースに保存します – sasikumar

+0

私は知っていますが、カスタムオブジェクトをカスタムオブジェクトとしてsqllite dbに保存する方法はありますか?私は多くのクラスのためにこれを使用しようとしています、そうでなければ、異なるクラスの各メンバフィールドのための文字列変換器との間で書き込みを行います。 – user1406716

+0

永続性を扱うときのその獣の本質の種類。大量の情報を保存する場合は、より多くの正規化の観点からアプローチし、個別にすべてを保存するのではなく、実行時にどの情報を生成できるかを調べるのが最善の方法です。 また、jsonを解析してからオブジェクトに変換することは、複雑なオブジェクトに対して有効なアプローチですが、SQLiteのオブジェクトの「これを保存する方法」を書くことは避けられません。 – Nick

答えて

0

つのオブジェクトの使用にJSONがシリアライズされたJSON文字列である

Gson gson = new Gson(); 
Model_BlockTimes item = gson.fromJson(json, Model_BlockTimes.class); 

をデシリアライズするには。

ところで、sqliteには5 typesがあり、BLOBではprotobufを使用してスペースを節約できます。

関連する問題