【问题标题】:How to deserialize a json data using GSON?如何使用 GSON 反序列化 json 数据?
【发布时间】:2017-03-30 14:26:06
【问题描述】:
    [{"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);
}}

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

【问题讨论】:

标签: java android json illegalstateexception gson


【解决方案1】:

json.getAsJsonArray().getAsJsonObject() 与 json.getAsJsonObject() 相同,这就是您的异常的原因。

你的意思可能是json.getAsJsonArray().get(0).getAsJsonObject()。

【讨论】:

  • 请帮我解决问题 data:[{key:value},null,{key:value}]
  • @Manish 如果你有问题,你应该问一个问题(点击右上角的“”链接),而不是随随便便回答别人的问题。
  • sry 但我只是想建议我如何解析那个 json
  • @Andreas 我试过这个:json.getAsJsonObject().get(CONTACTS).getAsJsonArray();但仍然出现错误。
  • @AbhishekKumar 当然,因为json 中的元素不是 JsonObject,所以json.getAsJsonObject() 会抛出异常。再次阅读我的答案,并尝试我的建议,即在getAsJsonArray() 和getAsJsonObject() 之间添加get(0)。
【解决方案2】:

看起来您的 json 包含在 [] 中,这表示一个数组。试试:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-24
    相关资源
    最近更新 更多