用gson和java解析json

时间:2015-06-24 13:17:41

标签: java json gson

我正在努力用Java和gson解析json输出,但我真的被卡住了。

我很感激任何消化。

这是我的示例JSON文件:

{
"sportId": 29,
"last": 26142386,
"league": [
    {
        "id": 1833,
        "events": [
            {
                "id": 383911973,
                "starts": "2015-01-22T21:00:00Z",
                "home": "America de Natal",
                "away": "Barras",
                "rotNum": "901",
                "liveStatus": 0,
                "status": "O",
                "parlayRestriction": 0
            },
            {
                "id": 383911974,
                "starts": "2015-01-22T21:00:00Z",
                "home": "Baraunas RN",
                "away": "ASSU RN",
                "rotNum": "904",
                "liveStatus": 0,
                "status": "O",
                "parlayRestriction": 0
            }
        ]
    }
  ]
}

我的目标是制作一个二维数组(或类似的)形式:

leagueId, eventId, home, away
------------------------------
   1         1       a    b
   .         .       .    .
   .         .       .    .
  etc       etc     etc   etc

以便在MYSQL表中插入数据。

我写了以下课程:

public class Fixtures {
int last;
int sportId;
ArrayList<Leagues> league = new ArrayList<Leagues>();

public ArrayList<Leagues> getListOfLeagues() {  
    return league;  
}  

public int getSportId(){
    return sportId;
}

 public int getLast(){
    return last;
 }

}

public class Leagues {
int id;
ArrayList<Events> events;

public int getLeagueId(){
    return id;
}

 public ArrayList<Events> getListOfEvents() {  
    return events;  
 }  

}

public class Events {
int id;
String home;
String away;


public int getEventId(){
    return id;
}

public String getHome() {  
    return home;  
}  

 public String getAway() {
    return away;
 }


}

Gson gson = new GsonBuilder().create();             
Fixtures fixture = gson.fromJson(jsonsource, Fixtures.class);
System.out.println(fixture.getSportId());
System.out.println(fixture.getLast());

ArrayList<Leagues> Leagues = fixture.getListOfLeagues();

不知道如何继续:(

3 个答案:

答案 0 :(得分:1)

这里真正的答案是不要这样做。

你看过Hibernate吗?它就像C#的实体一样。它允许您作为面向对象的实体结构与关系数据库进行交互,这是我们习惯于思考事物的方式。

通常,当您将一组数据作为输入并需要将该数据放入数据库时​​,您需要做一些注意事项:

  1. 我的输入是否正确表示我的数据存储方式?
  2. 我的关系模型(数据库)是否代表我的数据使用方式?
  3. 如果其中一个或两个都是&#34; no&#34;,我可以更改其中任何一个以使它们成立吗?
  4. 如果您的模型是好的并且您的输入是好的(您的输入看起来很好),那么您不需要将数据放入中间层,您应该能够遍历适用的字段并放置数据在您的数据库中。如果您不能这样做,我建议您重建数据库。同样,我知道这是一个侧面的答案,但你确实要求建议:)

答案 1 :(得分:0)

尝试使用jackson将JSON解析为java对象,从这里获得一些帮助,其中类似的JSON被解析为几个java对象。

JSON parsing example using jackson

尝试一下,如果您发现任何问题,请告诉我。

答案 2 :(得分:0)

好的,我想出了如何进行迭代:

 for (Leagues leg : Leagues) {
        System.out.println(leg.getLeagueId());
        ArrayList<Events> Events = leg.getListOfEvents();
        for (Events event : Events) {
            System.out.println(event.getEventId());
            System.out.println(event.getHome());
            System.out.println(event.getAway());
            System.out.println(event.getStarts());
        }

    }

谢谢大家。