Java 如何存储自定义对象的ArrayList(Geofence)

Java 如何存储自定义对象的ArrayList(Geofence),java,android,gson,android-geofence,Java,Android,Gson,Android Geofence,我正在尝试使用Gson将地理围栏列表存储在SharedReferences中。 这就是我到目前为止所做的 ArrayListOfGeofence listOfGeofence = new ArrayListOfGeofence(); listOfGeofence.setmGeofencesList(mGeofenceList); editor = goefenceIdsPreferences.edit();

我正在尝试使用Gson地理围栏列表存储在SharedReferences中。 这就是我到目前为止所做的

           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}]
我的实际地理围栏阵列列表是:

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;
}

}

不要为此使用共享首选项。它不是为它而设计的,共享偏好的目的不是存储所有的东西。您已经将其保存为JSON,只需将JSON另存为文件

编辑行: 字符串json=gson.toJson(listofgeoffence.mggeoffenceslist); 作者:
字符串json=gson.toJson(listofgeoffence.getmGeofencesList())

反序列化泛型集合的write方法:这是另一个故事,我甚至无法存储它并将其正确序列化。因此,请检查解析json的位置,以及在
Log.i(标记,“json地理围栏对象:”+json)中得到的内容我更新了我的问题,你可以看到我的日志。我知道将所有内容存储在SharedReferences中是一种不好的做法,但是你可以看到,即使是json也不像预期的那样正确。但是,如果你已经将数据作为json(甚至是损坏的json)并可以将其解析为json,为什么不直接使用这种格式呢?所有的代码都是写的,除了写入文件。是的,你是对的。。目前我能做到。谢谢
GSON Generic: failed to deserialized json object