I am trying to parse json data with Google's gson library. But the json data doesn't behave well.
It does look like this when everything is alright:
{
"parent": {
"child_one": "some String",
"child_two": "4711",
...
}
}
child_one
should be parsed as String
, child_two
as int
.
But sometimes one of the children has no values what results in an empty object instead of null
, like this:
{
"parent": {
"child_one": "some String",
"child_two": {},
...
}
}
I have no access to alter the json feed, so I have to deal with it during deserialization.
But I am lost here. If I just let it parse the 2nd case gives me a JsonSyntaxException
.
I thought about using a custom JsonDeserializer
. Do there something like inspect every element if it is a JsonObject
and if it is, check if the entrySet.isEmpty()
. If yes, remove that element.
But I have no idea how to accomplish the iterating...
Can't you just replace {} with NULL before passing it to the GSON?
Make your
TypeAdapter<String>
'sread
method like this:Explain: when next token is
[
or]
, just skip it and return null.If you replace all
[]
tonull
useString#replaceAll
directly, some real string may be replaced as well, This may cause some other bugs.