I’m trying to parse a JSON feed using Gson in Android. I know the JSON is valid. I suspect that it is because the format is like this:
"Info":[
{
"Id":"",
"Name":"",
"Description":"",
"Date":""
}
In order to parse this I need to “dot” in. Ex: Info.Name
How can I do this in a serialized DTO?
@SerializedName("Name")
public String name;
@SerializedName("Description")
public String desc;
@SerializedName("Date")
public String date;
I tried to put “Info.” in front of each serializedName but that didn’t work either. I also know my JSON parsing method works properly, because it’s used somewhere else with a different DTO. But in that parsing, I don’t have to “dotting” issue.
Can anyone help?
EDIT: I have tried everything you guys posted, and nothing works. The error says:
The JsonDeserializer failed to deserialize json object {"Info":[{".......
SECOND EDIT:
I was able to get rid of the error, but now it returns null. Haha, getting pretty damn frustrated right about now!
I am assuming that the actual JSON you are intaking is valid because the example you provided is not. In your JSON example, you have
"Info":[but there is no outer object containing the “Info” property, which is a must. The valid JSON would be:This is a JSON object that has a property “Info” which has a value that is a list of objects. This list of objects contains one object that has the properties “Id”, “Name”, “Description”, and “Date”, all of which have empty-string values.
Here is a quick tutorial on how to use GSON to parse a JSON feed such as the above JSON:
You will need a class to represent the items in the list:
And one to represent the list of Items:
This added complexity is because GSON cannot otherwise get the type of a generic collection from the class data.
And one to represent the overall JSON message:
And then just:
If just de-serializing a collection: