Gson (Json) синтаксический анализ исключения - PullRequest
0 голосов
/ 24 сентября 2011

Я получаю исключение при разборе JSON с Gson.

Следующее исключение:

com.google.gson.JsonParseException: The JsonDeserializer StringTypeAdapter failed to deserialize json object {"CGLIB$BOUND":true,"CGLIB$CONSTRUCTED":true,"CGLIB$CALLBACK_0":{"interfaces":[{}],"constructed":true,"persistentClass":{},"getIdentifierMethod":{"clazz":{},"slot":0,"name":"getmId","returnType":{},"parameterTypes":[],"exceptionTypes":[],"modifiers":1,"annotations":[0,3,0,67,0,0,0,68,0,0,0,69,0,1,0,70,115,0,71],"root":{"clazz":{},"slot":0,"name":"getmId","returnType":{},"parameterTypes":[],"exceptionTypes":[],"modifiers":1,"annotations":[0,3,0,67,0,0,0,68,0,0,0,69,0,1,0,70,115,0,71],"override":false},"override":false},"setIdentifierMethod":{"clazz":{},"slot":1,"name":"setmId","returnType":{},"parameterTypes":[{}],"exceptionTypes":[],"modifiers":1,"root":{"clazz":{},"slot":1,"name":"setmId","returnType":{},"parameterTypes":[{}],"exceptionTypes":[],"modifiers":1,"override":false},"override":false},"overridesEquals":false,"initialized":false,"entityName":"com.domain.Hotel","id":1,"unwrap":false},"mId":0,"mHotelLatitude":0.0,"mHotelLongitude":0.0,"mHotelRating":0.0,"mHotelAvgPrice":0.0} given the type class java.lang.String

JSON:

{
    "CGLIB$BOUND": true,
    "CGLIB$CONSTRUCTED": true,
    "CGLIB$CALLBACK_0": {
        "interfaces": [
            {}
        ],
        "constructed": true,
        "persistentClass": {},
        "getIdentifierMethod": {
            "clazz": {},
            "slot": 0,
            "name": "getmId",
            "returnType": {},
            "parameterTypes": [],
            "exceptionTypes": [],
            "modifiers": 1,
            "annotations": [
                0,
                3,
                0,
                67,
                0,
                0,
                0,
                68,
                0,
                0,
                0,
                69,
                0,
                1,
                0,
                70,
                115,
                0,
                71
            ],
            "root": {
                "clazz": {},
                "slot": 0,
                "name": "getmId",
                "returnType": {},
                "parameterTypes": [],
                "exceptionTypes": [],
                "modifiers": 1,
                "annotations": [
                    0,
                    3,
                    0,
                    67,
                    0,
                    0,
                    0,
                    68,
                    0,
                    0,
                    0,
                    69,
                    0,
                    1,
                    0,
                    70,
                    115,
                    0,
                    71
                ],
                "override": false
            },
            "override": false
        },
        "setIdentifierMethod": {
            "clazz": {},
            "slot": 1,
            "name": "setmId",
            "returnType": {},
            "parameterTypes": [
                {}
            ],
            "exceptionTypes": [],
            "modifiers": 1,
            "root": {
                "clazz": {},
                "slot": 1,
                "name": "setmId",
                "returnType": {},
                "parameterTypes": [
                    {}
                ],
                "exceptionTypes": [],
                "modifiers": 1,
                "override": false
            },
            "override": false
        },
        "overridesEquals": false,
        "initialized": false,
        "entityName": "com.domain.Hotel",
        "id": 1,
        "unwrap": false
    },
    "mId": 0,
    "mHotelLatitude": 0,
    "mHotelLongitude": 0,
    "mHotelRating": 0,
    "mHotelAvgPrice": 0
}

Кто-нибудь имеет представление о том, почему возникло это исключение?

Привет

1 Ответ

1 голос
/ 24 сентября 2011

Я могу получить этот JSON для анализа в Gson. Вышеуказанная ошибка возникает, когда вы неправильно сопоставили тип свойства JSON с типом члена Java в вашем POJO (например, тип массива в JSON объявлен как тип String в вашем POJO).

Ошибка мне немного любопытна, так как Gson обычно выводит JSON из свойства, которое не может быть отображено. В вашем случае это будет CGLIB$BOUND, что является boolean, но в этом случае Gson ведет себя хорошо, давая вам значение String "true". Мы можем более точно определить вашу проблему, если вы предоставите POJO, который вы пытаетесь десериализовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...