1

Gsonを使用して、共有設定にジオフェンスのリストを保存しようとしています。これは私がこれまでやってきたことです

           ArrayListOfGeofence listOfGeofence = new ArrayListOfGeofence();

            listOfGeofence.setmGeofencesList(mGeofenceList);

            editor = goefenceIdsPreferences.edit();

            Gson gson = new Gson();

            String json = gson.toJson(listOfGeofence.mGeofencesList);

            Log.i(TAG, "Json Geofence Objects: " + json);

            editor.putString(fenceName, json).commit();

物事は本来あるべきものではありません.これは私のログが示すものです:

Json Geofence Objects: [{"Jo":"1","NU":3,"Oz":-1,"NX":12.93217,"NY":77.63186,"NZ":300.0,"Oa":0,"Ob":-1,"NW":1,"xH":1}]

私の実際のジオフェンス ArrayList は次のとおりです。

ArrayListOfGeofence: [Geofence[CIRCLE id:1 transitions:3 12.932490, 77.630830 300m, resp=0s, dwell=-1ms, @-1], Geofence[CIRCLE id:2 transitions:3 12.934540, 77.628650 300m, resp=0s, dwell=-1ms, @-1]]

そして、これは私がArrayListOfGeofenceクラスのために書いたものです

public class ArrayListOfGeofence implements Serializable {

/**
 * 
 */
private static final long serialVersionUID = 1L;

List<Geofence> mGeofencesList = new ArrayList<Geofence>();


public List<Geofence> getmGeofencesList()
{
    return mGeofencesList;
}

public void setmGeofencesList(List<Geofence> mGeofencesList) 
{
    this.mGeofencesList = mGeofencesList;
}

}

しかし、ジオフェンス オブジェクトを元に戻すことができないため、エラーが発生します。

GSON Generic: failed to deserialized json object
4

2 に答える 2

1

これには共有設定を使用しないでください。それはそれのために作られたものではなく、共有設定の目的はすべてを保存することではありません. すでにJSONとして持っているので、jsonをファイルとして保存するだけです

于 2014-07-15T06:50:01.583 に答える
0

次の行を編集します: String json = gson.toJson(listOfGeofence.mGeofencesList); By: 文字列 json = gson.toJson(listOfGeofence.getmGeofencesList());

于 2014-07-15T06:57:05.143 に答える