繁体   English   中英

用gson和java解析json

[英]Parsing json with gson and java

我正在努力用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();

不知道如何进行:(

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

你看过冬眠了吗? 就像C#的Entity。 它使您可以作为面向对象的实体结构与关系数据库进行交互,这就是我们习惯于思考事物的方式。

通常,当您有一组数据作为输入并且需要将这些数据放入数据库中时,您需要考虑以下几点:

  1. 我的输入是否正确表示我的数据存储方式?
  2. 我的关系模型(数据库)是否表示如何使用我的数据?
  3. 如果其中一个或两个都为“否”,我可以更改其中一个以使它们为真吗?

如果您的模型是好的并且您的输入是好的(您的输入看起来很好),那么您就不必将数据放入中间层,您应该能够遍历适用的字段并将数据放入数据库中。 如果您不能这样做,建议您重组数据库。 同样,我知道这是一个横向答案,但是您确实提出了建议:)

尝试杰克逊将JSON解析为Java对象,您会从这里得到一些帮助,这里将类似的JSON解析为几个Java对象。

使用Jackson的JSON解析示例

尝试一下,让我知道是否有任何问题。

好的,我知道了如何进行迭代:

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

    }

谢谢大家

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM