如何使用 GSON 反序列化 json 数据?
How to deserialize a json data using 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
解串器 class 是:
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);
}}
请帮助我 out.Any 帮助您反序列化的资源或教程。
看起来您的 json 位于 [] 中,这表示一个数组。尝试:
{
"contacts":
[
{
"name": "Ramesh Sippi",
"email": "ramesh.sippi@gmail.com",
"phone": 9972366543,
"officePhone": 80012345676,
"latitude": 18.5204,
"longitude": 73.8567
}
]
}
json.getAsJsonArray().getAsJsonObject()
与 json.getAsJsonObject()
相同,这就是您出现异常的原因。
您的意思可能是 json.getAsJsonArray().get(0).getAsJsonObject()
。
[{"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
解串器 class 是:
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);
}}
请帮助我 out.Any 帮助您反序列化的资源或教程。
看起来您的 json 位于 [] 中,这表示一个数组。尝试:
{
"contacts":
[
{
"name": "Ramesh Sippi",
"email": "ramesh.sippi@gmail.com",
"phone": 9972366543,
"officePhone": 80012345676,
"latitude": 18.5204,
"longitude": 73.8567
}
]
}
json.getAsJsonArray().getAsJsonObject()
与 json.getAsJsonObject()
相同,这就是您出现异常的原因。
您的意思可能是 json.getAsJsonArray().get(0).getAsJsonObject()
。