Мой массив - это список событий, и мне нужно инициализировать каждое событие с помощью его информации из моего файла JSON. Я создал эту простую настройку на основе того, что я нашел в других ответах здесь, используя GSON, но я очень смущен тем, как работает вызов gson.fromJSON.Как правильно отформатировать этот вызов gson.fromJson?
У меня есть 3 переменные в событии, которое я хочу извлечь из файла JSON - дата начала, дата окончания и резюме. Из JSON автоматически присваивает их из JSON их значениям в Event?
это то, что мой файл JSON выглядит следующим образом:
[
{
"dtstart": "10/31/2015",
"dtend": "10/31/2015",
"summary": "Halloween"
},
.....
]
Есть около полудюжины более из этих таких событий.
Это мой код в моем главном файле Java:
public class MainActivity extends AppCompatActivity {
Event[] mobileArray;
Gson gson = new Gson();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader("academiccalendar.json"));
} catch (FileNotFoundException e){
e.printStackTrace();
}
mobileArray = gson.fromJson(br, Event[].class);
И это мой класс событий:
public class Event {
private String dtsart;
private String dtend;
private String summary;
Я знаю, что это должно заставить меня выглядеть полным дураком. Но я не могу оборачивать голову тем, как превратить этот JSON-файл в массив событий. Может ли кто-нибудь указать мне в правильном направлении? Я пробовал много других методов на StackOverflow и в других местах, но ничто не кажется правильным для моей ситуации.
EDIT: Удален цикл, который у меня был для mobileArray, с линией Gil. ВАЖНО для будущих людей, читающих это сообщение. FromGSON не инициализировал одни и те же переменные в моем классе Event, и я понял, что это было потому, что они были закрыты, и я пытался назначить их из моего основного класса активности. Я должен был перейти на публичный
Я не знал, что вы можете поставить целый массив в качестве второго аргумента. Моя IDE не дает мне ошибку, я просто не знаю, как работает звонок от JSON. Будет ли автоматически назначаться каждый объект объекта dtstart, dtend и итоговые переменные из моего файла JSON, просто называя эту строку кода? – Johnny
Да, вы должны получать все объекты, выровненные по порядку в mobileArray. Добро пожаловать в силу Gson :) – Gil
Это фантастика, это проще, чем я думал тогда. Будет ли эта строка вы вызывать также инициализировать мобильный массив? т.е. если в моем файле JSON есть 17 вещей, в mobileArray автоматически будет 17 событий? – Johnny