List and java.lang.ClassCastException: com.google.gson.internal.StringMap
up vote
0
down vote
favorite
Below my function,
public <T> List<T> jsonToListBean(String json, Class<T> clazz) {
Gson gson = new Gson();
Type listType = new TypeToken<List<T>>(){}.getType();
List<T> returnValue = gson.fromJson(json, listType);
return returnValue;
}
but the system returns this exception:
java.lang.ClassCastException: com.google.gson.internal.StringMap
I notice also that if I use the following line code
Type listType = new TypeToken<ArrayList<ShapeBean>>(){}.getType();
it works, but my target is to be absolutly as generic as possible to make my code more efficient.
How should i change my code to make usable also passing the type "T" instead the "ShapeBean"?
java json gson javabeans classcastexception
add a comment |
up vote
0
down vote
favorite
Below my function,
public <T> List<T> jsonToListBean(String json, Class<T> clazz) {
Gson gson = new Gson();
Type listType = new TypeToken<List<T>>(){}.getType();
List<T> returnValue = gson.fromJson(json, listType);
return returnValue;
}
but the system returns this exception:
java.lang.ClassCastException: com.google.gson.internal.StringMap
I notice also that if I use the following line code
Type listType = new TypeToken<ArrayList<ShapeBean>>(){}.getType();
it works, but my target is to be absolutly as generic as possible to make my code more efficient.
How should i change my code to make usable also passing the type "T" instead the "ShapeBean"?
java json gson javabeans classcastexception
I'm not really familiar with GSON but you could try to implement some method ofTypeToken
that makes use ofclazz
or createlistType
yourself. One thing we're doing with Jackson isClass<? extends Object> arrayClass = Array.newInstance( clazz, 0 ).getClass()
,passarrayClass
to Jackson and finally returnArrays.asList( parsedArray )
whereparsedArray
is what Jackson returns. Something similar might be possible with GSON - if you need that fallback.
– Thomas
Nov 19 at 14:34
1
Possible duplicate of Gson TypeToken with dynamic ArrayList item type
– kan
Nov 19 at 14:42
it does not solve my problem
– rugby82
Nov 19 at 14:53
How you are callingjsonToListBean(..)
?
– Ashish Patil
Nov 19 at 15:04
List<ShapeBean> listaBean = jsonToListBean(jsonMessage, ShapeBean.class);
– rugby82
Nov 19 at 15:28
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
Below my function,
public <T> List<T> jsonToListBean(String json, Class<T> clazz) {
Gson gson = new Gson();
Type listType = new TypeToken<List<T>>(){}.getType();
List<T> returnValue = gson.fromJson(json, listType);
return returnValue;
}
but the system returns this exception:
java.lang.ClassCastException: com.google.gson.internal.StringMap
I notice also that if I use the following line code
Type listType = new TypeToken<ArrayList<ShapeBean>>(){}.getType();
it works, but my target is to be absolutly as generic as possible to make my code more efficient.
How should i change my code to make usable also passing the type "T" instead the "ShapeBean"?
java json gson javabeans classcastexception
Below my function,
public <T> List<T> jsonToListBean(String json, Class<T> clazz) {
Gson gson = new Gson();
Type listType = new TypeToken<List<T>>(){}.getType();
List<T> returnValue = gson.fromJson(json, listType);
return returnValue;
}
but the system returns this exception:
java.lang.ClassCastException: com.google.gson.internal.StringMap
I notice also that if I use the following line code
Type listType = new TypeToken<ArrayList<ShapeBean>>(){}.getType();
it works, but my target is to be absolutly as generic as possible to make my code more efficient.
How should i change my code to make usable also passing the type "T" instead the "ShapeBean"?
java json gson javabeans classcastexception
java json gson javabeans classcastexception
edited Nov 19 at 15:40
asked Nov 19 at 14:26
rugby82
159213
159213
I'm not really familiar with GSON but you could try to implement some method ofTypeToken
that makes use ofclazz
or createlistType
yourself. One thing we're doing with Jackson isClass<? extends Object> arrayClass = Array.newInstance( clazz, 0 ).getClass()
,passarrayClass
to Jackson and finally returnArrays.asList( parsedArray )
whereparsedArray
is what Jackson returns. Something similar might be possible with GSON - if you need that fallback.
– Thomas
Nov 19 at 14:34
1
Possible duplicate of Gson TypeToken with dynamic ArrayList item type
– kan
Nov 19 at 14:42
it does not solve my problem
– rugby82
Nov 19 at 14:53
How you are callingjsonToListBean(..)
?
– Ashish Patil
Nov 19 at 15:04
List<ShapeBean> listaBean = jsonToListBean(jsonMessage, ShapeBean.class);
– rugby82
Nov 19 at 15:28
add a comment |
I'm not really familiar with GSON but you could try to implement some method ofTypeToken
that makes use ofclazz
or createlistType
yourself. One thing we're doing with Jackson isClass<? extends Object> arrayClass = Array.newInstance( clazz, 0 ).getClass()
,passarrayClass
to Jackson and finally returnArrays.asList( parsedArray )
whereparsedArray
is what Jackson returns. Something similar might be possible with GSON - if you need that fallback.
– Thomas
Nov 19 at 14:34
1
Possible duplicate of Gson TypeToken with dynamic ArrayList item type
– kan
Nov 19 at 14:42
it does not solve my problem
– rugby82
Nov 19 at 14:53
How you are callingjsonToListBean(..)
?
– Ashish Patil
Nov 19 at 15:04
List<ShapeBean> listaBean = jsonToListBean(jsonMessage, ShapeBean.class);
– rugby82
Nov 19 at 15:28
I'm not really familiar with GSON but you could try to implement some method of
TypeToken
that makes use of clazz
or create listType
yourself. One thing we're doing with Jackson is Class<? extends Object> arrayClass = Array.newInstance( clazz, 0 ).getClass()
,pass arrayClass
to Jackson and finally return Arrays.asList( parsedArray )
where parsedArray
is what Jackson returns. Something similar might be possible with GSON - if you need that fallback.– Thomas
Nov 19 at 14:34
I'm not really familiar with GSON but you could try to implement some method of
TypeToken
that makes use of clazz
or create listType
yourself. One thing we're doing with Jackson is Class<? extends Object> arrayClass = Array.newInstance( clazz, 0 ).getClass()
,pass arrayClass
to Jackson and finally return Arrays.asList( parsedArray )
where parsedArray
is what Jackson returns. Something similar might be possible with GSON - if you need that fallback.– Thomas
Nov 19 at 14:34
1
1
Possible duplicate of Gson TypeToken with dynamic ArrayList item type
– kan
Nov 19 at 14:42
Possible duplicate of Gson TypeToken with dynamic ArrayList item type
– kan
Nov 19 at 14:42
it does not solve my problem
– rugby82
Nov 19 at 14:53
it does not solve my problem
– rugby82
Nov 19 at 14:53
How you are calling
jsonToListBean(..)
?– Ashish Patil
Nov 19 at 15:04
How you are calling
jsonToListBean(..)
?– Ashish Patil
Nov 19 at 15:04
List<ShapeBean> listaBean = jsonToListBean(jsonMessage, ShapeBean.class);
– rugby82
Nov 19 at 15:28
List<ShapeBean> listaBean = jsonToListBean(jsonMessage, ShapeBean.class);
– rugby82
Nov 19 at 15:28
add a comment |
1 Answer
1
active
oldest
votes
up vote
0
down vote
Solved. Thanks to kan's link below the code:
public <T> List<T> listEntity(String jsonCommand, Class<T> clazz) {
List<T> lst = new ArrayList<T>();
try {
// Consuming remote method
JsonParser parser = new JsonParser();
JsonArray array = parser.parse(jsonCommand).getAsJsonArray();
for(final JsonElement json: array){
Gson g = new Gson();
T entity = g.fromJson(json, clazz);
lst.add(entity);
}
} catch (Exception e) {
e.printStackTrace();
} return lst;
}
check also this:
Gson TypeToken with dynamic ArrayList item type
add a comment |
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
0
down vote
Solved. Thanks to kan's link below the code:
public <T> List<T> listEntity(String jsonCommand, Class<T> clazz) {
List<T> lst = new ArrayList<T>();
try {
// Consuming remote method
JsonParser parser = new JsonParser();
JsonArray array = parser.parse(jsonCommand).getAsJsonArray();
for(final JsonElement json: array){
Gson g = new Gson();
T entity = g.fromJson(json, clazz);
lst.add(entity);
}
} catch (Exception e) {
e.printStackTrace();
} return lst;
}
check also this:
Gson TypeToken with dynamic ArrayList item type
add a comment |
up vote
0
down vote
Solved. Thanks to kan's link below the code:
public <T> List<T> listEntity(String jsonCommand, Class<T> clazz) {
List<T> lst = new ArrayList<T>();
try {
// Consuming remote method
JsonParser parser = new JsonParser();
JsonArray array = parser.parse(jsonCommand).getAsJsonArray();
for(final JsonElement json: array){
Gson g = new Gson();
T entity = g.fromJson(json, clazz);
lst.add(entity);
}
} catch (Exception e) {
e.printStackTrace();
} return lst;
}
check also this:
Gson TypeToken with dynamic ArrayList item type
add a comment |
up vote
0
down vote
up vote
0
down vote
Solved. Thanks to kan's link below the code:
public <T> List<T> listEntity(String jsonCommand, Class<T> clazz) {
List<T> lst = new ArrayList<T>();
try {
// Consuming remote method
JsonParser parser = new JsonParser();
JsonArray array = parser.parse(jsonCommand).getAsJsonArray();
for(final JsonElement json: array){
Gson g = new Gson();
T entity = g.fromJson(json, clazz);
lst.add(entity);
}
} catch (Exception e) {
e.printStackTrace();
} return lst;
}
check also this:
Gson TypeToken with dynamic ArrayList item type
Solved. Thanks to kan's link below the code:
public <T> List<T> listEntity(String jsonCommand, Class<T> clazz) {
List<T> lst = new ArrayList<T>();
try {
// Consuming remote method
JsonParser parser = new JsonParser();
JsonArray array = parser.parse(jsonCommand).getAsJsonArray();
for(final JsonElement json: array){
Gson g = new Gson();
T entity = g.fromJson(json, clazz);
lst.add(entity);
}
} catch (Exception e) {
e.printStackTrace();
} return lst;
}
check also this:
Gson TypeToken with dynamic ArrayList item type
answered Nov 20 at 13:53
rugby82
159213
159213
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53376727%2flisttype-and-java-lang-classcastexception-com-google-gson-internal-stringmap%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
I'm not really familiar with GSON but you could try to implement some method of
TypeToken
that makes use ofclazz
or createlistType
yourself. One thing we're doing with Jackson isClass<? extends Object> arrayClass = Array.newInstance( clazz, 0 ).getClass()
,passarrayClass
to Jackson and finally returnArrays.asList( parsedArray )
whereparsedArray
is what Jackson returns. Something similar might be possible with GSON - if you need that fallback.– Thomas
Nov 19 at 14:34
1
Possible duplicate of Gson TypeToken with dynamic ArrayList item type
– kan
Nov 19 at 14:42
it does not solve my problem
– rugby82
Nov 19 at 14:53
How you are calling
jsonToListBean(..)
?– Ashish Patil
Nov 19 at 15:04
List<ShapeBean> listaBean = jsonToListBean(jsonMessage, ShapeBean.class);
– rugby82
Nov 19 at 15:28