2015-06-24 2 views
0

Я изо всех сил пытаюсь разобрать выход json с Java и gson, но я действительно застрял.Parsing json с gson и java

Я был бы признателен любым suugention.

Это мой пример 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 
      } 
     ] 
    } 
    ] 
} 

Моя цель заключается в макияжа 2-мерный массив (или нечто подобное) вида:

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

не знаю, как поступить :(

+1

Я заметил, что вы новичок здесь, и это фантастическая работа для первого вопроса. Мое единственное предложение было бы немного более конкретным в этой проблеме! Вы говорите, что у вас проблемы с обработкой json с помощью java и gson, но я думаю, что вы не получаете ошибок, просто не знаете, как лучше всего решить вашу проблему.В будущем помните, что описание проблемы - это первый шаг, позволяющий другим разработчикам узнать, могут ли они помочь вам. –

+0

@Alexandros кажется, что вы на самом деле близки к достижению того, что хотите, при условии, что разбор Gson работает правильно. Можете ли вы уточнить, в чем проблема? Вы неясны, как взаимодействовать с БД или проблема, как сгладить ваши объекты домена в набор строк в одной таблице? –

+0

@ pens-fan-69, привет друг. Моя проблема в том, что я не знаю, как сгладить мой объект домена в одной таблице. Я не знаю, как правильно итерации через массив извлекать данные в плоской таблице. Я в порядке с БД, это не проблема. Спасибо – Alexandros

ответ

1

Реальный ответ здесь не делать это таким образом

Вы смотрите на Hibernate? Это похоже на Entity для C#. Это позволяет вам взаимодействовать с вашим релятором в качестве объектно-ориентированной структуры сущностей, которая, как мы привыкли думать о вещах.

Как правило, когда у вас есть набор данных в качестве входных данных и нужно поместить эти данные в базе данных, вам нужно сделать несколько соображений:

  1. ли мой вход правильно представлять, как хранятся мои данные?
  2. Является ли моя реляционная модель (база данных) как мои данные используются?
  3. Если один или оба из них являются «нет», могу ли я изменить любой из них, чтобы сделать их истинными?

Если ваша модель хороша, и ваш вход хороший (что ваш вход выглядит нормально), тогда вам не нужно будет помещать ваши данные в промежуточный слой, вы должны иметь возможность перебирать соответствующие поля и поместите данные в свою базу данных. Если вы не можете этого сделать, я бы рекомендовал реструктурировать вашу базу данных. Опять же, я знаю, что это своего рода ответ на бок, но вы просили предложения :)

0

Попробуйте Джексон разобрать JSON на объект java, вы получите некоторую помощь отсюда, когда аналогичный JSON был разобран на пару объектов Java ,

JSON parsing example using jackson

Попробуйте и дайте мне знать, если вы обнаружите какие-либо проблемы.

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

    } 

Спасибо всем.

+0

Если вы используете Java 8, вы также можете взглянуть на потоки, чтобы выполнить то же самое, что может быть более компактным кодом. Однако это прекрасно работает. Рад, что ты это понял. –