Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Parsing JSON Array using GSON

I have a basic JSON with all data contained in an array. One would think that it would be simple to retreive a value out of the array, but after multiple hours of trying every different method of parsing I could think of I'm completely lost. Any help would be greatly appreciated. Sorry for the horrid wording of this question.

I know I've attempted reading the JSON as an object using JsonReader and then parsing for the ID field. That would be my latest attempt, the code for the other attempts has already been deleted I'm afraid and I can't provide much information on said attempts

JsonReader reader = new JsonReader(new FileReader(Constants.VersJson));
        reader.beginObject();

        while (reader.hasNext()) {

          String name = reader.nextName();

          reader.beginArray();

          if (name.equals("id")) {

            System.out.println(reader.nextString());

Below I'll include a snippet of the JSON Array.

"versions": [
{
  "id": "2.7",
  "time": "2012-10-25T15:00:00+02:00",
  "releaseTime": "2013-10-25T15:00:00+02:00",
  "type": "Release"
},
{
  "id": "2.6.4",
  "time": "2011-12-2T14:01:07+02:00",
  "releaseTime": "2013-12-2T14:01:07+02:00",
  "type": "Develop"
},
{
  "id": "2.5",
  "time": "2010-11-24T21:05:00+02:00",
  "releaseTime": "2013-11-25T01:04:05+02:00",
  "type": "Develop"
like image 394
Andrew Davis Avatar asked Apr 15 '26 20:04

Andrew Davis


1 Answers

Your json format is not correct which you have posted here correct it for example

{ 
   "versions":[
      {
         "id":"2.7",
         "time":"2012-10-25T15:00:00+02:00",
         "releaseTime":"2013-10-25T15:00:00+02:00",
         "type":"Release"
      },
      {
         "id":"2.6.4",
         "time":"2011-12-2T14:01:07+02:00",
         "releaseTime":"2013-12-2T14:01:07+02:00",
         "type":"Develop"
      }
   ]
} 

First Define Classes you will get everything

public class Version {

       private List<Versions> versions;

       public List<Versions> getVersions() {
           return versions;
       }

       public void setVersions(List<Versions> versions) {
           this.versions = versions;
       }

       @Override
       public String toString() {
           return "Version [versions=" + versions + "]";
       }
}

public class Versions {

    private String  id;
    private String  time;
    private String  releaseTime;
    private String  type;
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getTime() {
        return time;
    }
    public void setTime(String time) {
        this.time = time;
    }
    public String getReleaseTime() {
        return releaseTime;
    }
    public void setReleaseTime(String releaseTime) {
        this.releaseTime = releaseTime;
    }
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
    @Override
    public String toString() {
        return "Versions [id=" + id + ", time=" + time + ", releaseTime="
                + releaseTime + ", type=" + type + "]";
    }
}

Finally you can parse the JSON as like here

JsonReader reader = new JsonReader(new FileReader(Constants.VersJson));
Gson gson = new Gson();
Version version = gson.fromJson(reader, Version.class);
like image 136
Asif Bhutto Avatar answered Apr 18 '26 09:04

Asif Bhutto



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!