簡體   English   中英

使用GSON解析JSON數組

[英]Parsing JSON Array using GSON

我有一個基本的JSON,數組中包含所有數據。 有人會認為從數組中獲取一個值很簡單,但是在嘗試了每種不同的解析方法多個小時之后,我可能會認為自己完全迷失了。 任何幫助將不勝感激。 對不起,這個問題的措辭令人討厭。

我知道我已經嘗試過使用JsonReader將JSON作為對象讀取,然后解析ID字段。 那將是我的最新嘗試,恐怕其他嘗試的代碼已被刪除,我無法提供有關上述嘗試的太多信息

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());

下面,我將包含JSON數組的代碼段。

"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"

您在此處發布的json格式不正確,例如,對其進行了糾正

{ 
   "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"
      }
   ]
} 

首先定義課程,您將獲得一切

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 + "]";
    }
}

最后,您可以像這里一樣解析JSON

JsonReader reader = new JsonReader(new FileReader(Constants.VersJson));
Gson gson = new Gson();
Version version = gson.fromJson(reader, Version.class);

我也遇到了使用gson解析json數組的問題,這是我的代碼解決了它

這是我的閱讀器類的功能

 JsonReader reader = new JsonReader(new InputStreamReader(new FileInputStream(myFile))); System.out.println( reader); Gson gson = new Gson(); JsonParser parser = new JsonParser(); JsonArray jArray = parser.parse(reader).getAsJsonArray(); ArrayList<JsonOperations> lcs = new ArrayList<JsonOperations>(); for(JsonElement obj : jArray ) { JsonOperations cse = gson.fromJson( obj , JsonOperations.class); lcs.add(cse); } for ( JsonOperations tUser : lcs) { System.out.println(tUser); } 

我的json操作類是

 public class JsonOperations { String match_id, pool_name, team1_name, team1_image, team2_name, team2_image, match_date, match_country, match_venue, predicted; public JsonOperations() { } public JsonOperations(String match_id, String pool_name, String team1_name, String team1_image, String team2_name, String team2_image, String match_date, String match_country, String match_venue, String predicted) { this.match_id = match_id; this.pool_name = pool_name; this.team1_name = team1_name; this.team1_image = team1_image; this.team2_name = team2_name; this.team2_image = team2_image; this.match_date = match_date; this.match_country = match_country; this.match_venue = match_venue; this.predicted = predicted; } public void set_team1(String team1_name) { this.team1_name = team1_name; } public void set_team2(String team2_name) { this.team2_name = team2_name; } public String get_team1() { return team1_name; } public String get_team2() { return team2_name; } @Override public String toString() { // TODO Auto-generated method stub return this.get_team1() + this.get_team2(); } } 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM