RuntimeException in Gson Parsen von JSON: Fehler beim aufrufen der geschützten java.lang.ClassLoader() ohne Argumente

Habe ich geerbt, einige code, der spart, unser Zustand der Anwendung als JSON mit Gson, und dann liest Sie mit fromJson.

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

Eines der Felder gespeichert werden, ist eine Lage. Leider sehr selten der Analyse, dass gespeicherte Daten nicht, weil meine gespeicherte Position umfasst eine mClassLoader in seiner mExtras, und die Gson-Bibliothek nicht erstellen der ClassLoader mit diesem Fehler:

RuntimeException: Failed to invoke geschützt java.lang.ClassLoader() ohne Argumente

Weiß jemand, warum ein ClassLoader ist in den extras für meine Lage, und ob es schließlich in die JSON-Darstellung?

Ich nehme an, ich kann dieses Problem beheben, indem Sie einfach speichern Sie die key-Felder aus dem Location-Objekt individuell (z.B. Längengrad, Breitengrad, Höhe, Zeit, Genauigkeit), aber es wäre schön, zu retten aus dem Location-Objekt, wenn möglich.

Ich sah, es ist ein ExclusionStrategy Objekt, die ich verwenden könnte, um auszuschließen Felder, aber ich war nicht sicher, ob ich das könnte/sollte man verwenden, um auszuschließen das die extras aus in meine Lage...

FYI, hier ist die JSON-Daten für meine Location-Objekt (mit den Längen-und Breitengrad verändert sich zu verstecken mich):

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

Hier ist ein Beispiel, was die mExtras enthält, wenn der code nicht abstürzt:

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