Problem deserializing JSON to Java Object

1.497 Aufrufe
Direkt zur ersten ungelesenen Nachricht

Aura 2.0

ungelesen,
30.11.2010, 04:17:5030.11.10
an google-gson
Hi,

I have the following JsonArray


[ {"uid":626335,
"affiliations":[{"status":"ikas","nid":16,"name":"Mu","year":
2005,"type":"college"}],
"name":"Juanita Vazquez"},
{"uid":635,
"affiliations":[],
"name":"Marcos Landa"} ]


I also have an Affiliation Java class with String variables for
"status", "nid", "name", "year" and "type" and their corresponding
getters/setters. And a User class with String variables for "uid" and
"name" and an Affiliation type variable "affiliations" (and getter/
setters).

When I try the following it works fine if the JSONs only have simple
values like "uid" or "name", but for nested JSONs like "affiliations"
I got a JsonParseException.

try {
for (int i=0;i<arrayJson.length();i++){
element = arrayJson.get(i).toString();
User u = (User)gson.fromJson(element, User.class);
list.add(u);
}
} catch (JSONException e) { e.printStackTrace(); }



Exception in thread "main" com.google.gson.JsonParseException:
Expecting object found: [{"status":"ikas","nid":16,"name":"Mu","year":
2005,"type":"college"}]
at
com.google.gson.JsonObjectDeserializationVisitor.visitFieldUsingCustomHandler(JsonObjectDeserializationVisitor.java:
99)
at
com.google.gson.ObjectNavigator.navigateClassFields(ObjectNavigator.java:
158)
at com.google.gson.ObjectNavigator.accept(ObjectNavigator.java:
131)
at
com.google.gson.JsonDeserializationVisitor.visitChild(JsonDeserializationVisitor.java:
107)
at
com.google.gson.JsonDeserializationVisitor.visitChildAsObject(JsonDeserializationVisitor.java:
95)
at
com.google.gson.JsonObjectDeserializationVisitor.visitObjectField(JsonObjectDeserializationVisitor.java:
61)
at
com.google.gson.ObjectNavigator.navigateClassFields(ObjectNavigator.java:
164)
at com.google.gson.ObjectNavigator.accept(ObjectNavigator.java:
131)
at
com.google.gson.JsonDeserializationContextDefault.fromJsonObject(JsonDeserializationContextDefault.java:
73)
at
com.google.gson.JsonDeserializationContextDefault.deserialize(JsonDeserializationContextDefault.java:
51)
at com.google.gson.Gson.fromJson(Gson.java:568)
at com.google.gson.Gson.fromJson(Gson.java:515)
at com.google.gson.Gson.fromJson(Gson.java:484)
at com.google.gson.Gson.fromJson(Gson.java:434)
at com.google.gson.Gson.fromJson(Gson.java:406)
...................


I traced the error back to a call of isJsonObject() method that
returns false for [{"status":"ikas","nid":16,"name":"Mu","year":
2005,"type":"college"}]. Isn't it a correct JsonObject?? I'm a
little confused here.


Thank you in advance.

limpb...@gmail.com

ungelesen,
30.11.2010, 22:11:4730.11.10
an google-gson

On Nov 30, 1:17 am, "Aura 2.0" <aura2d...@gmail.com> wrote:
> Expecting object found: [{"status":"ikas","nid":16,"name":"Mu","year":
> 2005,"type":"college"}]

The square brackets indicate that you're looking at a JSON array. Your
code should work if you change the affiliations field's type to be a
List<Affiliation>.

Aura 2.0

ungelesen,
01.12.2010, 03:34:1301.12.10
an google-gson
That was my first guess and I got and error. But I tried again and
realized that the error was for another thing, works fine with
List<Affiliation>.

Sometimes I'm surprisingly idiot ¬¬ Thanks a lot for your answer jesse
Allen antworten
Antwort an Autor
Weiterleiten
0 neue Nachrichten