RuntimeException dans Gson parsing JSON: impossible d'appeler protégé java.lang.Chargeur de classe() sans arguments

J'ai hérité un peu de code qui enregistre notre état de l'application de JSON à l'aide de Gson, et puis le lit à l'aide fromJson.

Gson gson = createGson();
gson.fromJson(objString, myClass);

L'un des champs d'être sauvé est un Emplacement. Malheureusement, très occasionnellement, l'analyse de données enregistrées échoue parce que mon Emplacement d'enregistrement comprend un mClassLoader dans son mExtras, et la Gson bibliothèque ne parvient pas à créer le chargeur de classe avec cette erreur:

RuntimeException: impossible d'appeler protégé java.lang.Chargeur de classe() sans arguments

Quelqu'un sait pourquoi un chargeur de classe est incluse dans les extras pour mon Emplacement, et si elle devrait être de se retrouver dans la représentation JSON?

Je suppose que je peux résoudre ce problème en vient de sauver de la clé des champs à partir de l'Emplacement de l'objet individuellement (par exemple, la longitude, la latitude, l'altitude, le temps, précision), mais il serait agréable de les enregistrer à l'Emplacement de l'objet, si possible.

J'ai vu il y a un ExclusionStrategy objet que je pourrais utiliser pour exclure des domaines, mais je ne savais pas si je pourrait/devrait l'utiliser pour exclure les extras de l'intérieur de mon Emplacement...

Pour info, voici les données JSON pour mon Emplacement de l'objet (avec la latitude et la longitude changé de me cacher):

{
    <snip>
    "lastKnownLocation": {
        "mResults": [
            0,
            0
        ],
        "mProvider": "gps",
        "mExtras": {
            "mParcelledData": {
                "mOwnObject": 1,
                "mObject": 5525040
            },
            "mClassLoader": {
                "packages": {}
            },
            "mMap": {},
            "mHasFds": false,
            "mFdsKnown": true,
            "mAllowFds": true
        },
        "mDistance": 0,
        "mTime": 1354658984849,
        "mAltitude": 5.199999809265137,
        "mLongitude": -122.4376,
        "mLon2": 0,
        "mLon1": 0,
        "mLatitude": 37.7577,
        "mLat1": 0,
        "mLat2": 0,
        "mInitialBearing": 0,
        "mHasSpeed": true,
        "mHasBearing": false,
        "mHasAltitude": true,
        "mHasAccuracy": true,
        "mAccuracy": 16,
        "mSpeed": 0,
        "mBearing": 0
    },
    <snip>
}

Voici un exemple de ce que l'mExtras contient lorsque le code ne plante pas:

"mExtras": {
    "mParcelledData": {
        "mOwnsNativeParcelObject": true,
        "mNativePtr": 1544474480
    },
    "mHasFds": false,
    "mFdsKnown": true,
    "mAllowFds": true
}
InformationsquelleAutor Dan J | 2012-12-19