{
"datetimes": [
{
"date": "2016-12-14",
"start_time": "08:00:00",
"end_time": "22:00:25"
},
{
"date": "2016-12-15",
"start_time": "08:00:00",
"end_time": "22:00:25"
},
...
]
}
Дополнение к вопросу:
public class UserDateDeserializer implements JsonSerializer<Date> {
@Override
public JsonElement serialize(Date src, Type typeOfSrc, JsonSerializationContext context) {
JsonObject obj = new JsonObject().getAsJsonObject("datetimes");
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
JsonArray jsonArray = obj.getAsJsonArray();
jsonArray.add(new JsonPrimitive(dateFormat.format(src)));
return obj;
}
}
Класс Event, который наследуется от RealmObject
private RealmList<EventDateTimes> datetimes;
Класс EventDateTimes:
public class EventDateTimes extends RealmObject {
private Date date;
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
}
P.S. пока что мне нужно понять, как можно сериализовать поле date. Заранее спасибо.
Если есть необходимость создавать JSON вручную, то это можно сделать с помощью стандартных классов JSONObject и JSONArray:
try {
JSONObject date1 = new JSONObject();
date1.put("date", "2016-12-14");
date1.put("start_time", "08:00:00");
date1.put("end_time", "22:00:25");
JSONObject date2 = new JSONObject();
date2.put("date", "2016-12-15");
date2.put("start_time", "08:00:00");
date2.put("end_time", "22:00:25");
JSONArray dates = new JSONArray();
dates.put(date1);
dates.put(date2);
JSONObject result = new JSONObject();
result.put("datetimes", dates);
Log.d("happy", result.toString());
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Я для сериализации исторически использую библиотеку Gson. obj
из примера ниже может быть любым объектом, сериализатор создаст поля в JSON в соответствии с полями сериализуемого класса. Каждый объект в полях класса тоже будет аналогичным образом сериализован.
Gson gson = new Gson();
String json = gson.toJson(obj);
Подключается:
compile 'com.google.code.gson:gson:2.8.0'
Документация здесь: https://sites.google.com/site/gson/gson-user-guide
Если проблема не в сериализаторе, а в описании данных в классах, то можно воспользоваться специальным сервисом. Например, ниже то, что генерит http://www.jsonschema2pojo.org/ на основе приведенного вами примера.
Заметьте, что в классах расставлены аннотации для сериализатора, его можно выбрать в настройках.
-----------------------------------com.example.Datetime.java----------------------------------
package com.example;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
public class Datetime {
@SerializedName("date")
@Expose
public String date;
@SerializedName("start_time")
@Expose
public String startTime;
@SerializedName("end_time")
@Expose
public String endTime;
}
-----------------------------------com.example.Example.java-----------------------------------
package com.example;
import java.util.List;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
public class Example {
@SerializedName("datetimes")
@Expose
public List<Datetime> datetimes = null;
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Здравствуйте, возникла проблемаУ меня есть таблица пользователей
Помогите, пожалуйста, решитьпроблему - уже третий день мучаюсь
Всем приветИнтересует вопрос, можно ли из блока catch снова вернуться в этот блок catch? Вот код: