如何使用GSON反序列化json数据?

时间:2016-11-16 11:42:53

标签: java android json illegalstateexception gson

    [{"contacts": 
     [
        {
            "name": "Ramesh Sippi",
            "email": "ramesh.sippi@gmail.com",
            "phone": 9972366543,
            "officePhone": 80012345676,
            "latitude": 18.5204,
            "longitude": 73.8567
        }
    ]
}]

我尝试反序列化上面的JSON,但它显示:

java.lang.IllegalStateException: Not a JSON Object

反序列化程序类是:

public class Deserializer implements JsonDeserializer<List<ContactDetails>> {
@Override
public List<ContactDetails> deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
    String CONTACTS = "contacts";
    return new Gson().fromJson(json.getAsJsonArray().getAsJsonObject().getAsJsonArray(CONTACTS),typeOfT);
}}

请帮助我。帮助您反序列化的任何资源或教程。

2 个答案:

答案 0 :(得分:1)

json.getAsJsonArray().getAsJsonObject()json.getAsJsonObject()相同,这是您例外的原因。

你可能意味着json.getAsJsonArray().get(0).getAsJsonObject()

答案 1 :(得分:-1)

看起来你的json里面有你的json,这表示一个数组。尝试:

{
    "contacts": 
     [
        {
            "name": "Ramesh Sippi",
            "email": "ramesh.sippi@gmail.com",
            "phone": 9972366543,
            "officePhone": 80012345676,
            "latitude": 18.5204,
            "longitude": 73.8567
        }
    ]
}