LoganSquare 不包括生成的字段名称 Json
LoganSquare not including field name on generated Json
我有一个classDbRecord
public class DbRecord {
@JsonField(name="on_duties")
List<OnDutyElement> onDuties;
@JsonField(name = "date_time")
DateTime dateTime;
当我尝试序列化此 class 的对象时,LoganSquare 不包含 dateTime 字段。
生成JSON:{:"2015-12-21T11:32:17.503-05:00","on_duties":[{...everything normal from here
可能存在错误。
编写您自己的扩展 DateTypeConverter
的 TypeConverter
,覆盖 serialize()
方法显式传递 writeFieldName
值 true
。
这将强制类型转换器将字段名称写入编写器。
如果所有 JSON 字段名称都是带下划线的小写字母,您可以这样定义 fieldNamingPolicy。
@JsonObject(fieldNamingPolicy = JsonObject.FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
public class DbRecord {
@JsonField
List<OnDutyElement> onDuties;
@JsonField
DateTime dateTime;
如果您还没有为 DateTime 设置 TypeConverter,LoganSquare 现在允许您像这样在 JsonField 注释中定义 TypeConverter
@JsonField(typeConverter = DateTimeConverter.class)
DateTime time;
和日期时间转换器
public class DateTimeConverter implements TypeConverter<DateTime> {
@Override
public DateTime parse(JsonParser jsonParser) throws IOException {
String dateString = jsonParser.getValueAsString(null);
try {
DateTime dateTime = new DateTime(dateString);
return dateTime.changeTimeZone(TimeZone.getTimeZone("UTC"), TimeZone.getDefault());
} catch (RuntimeException runtimeException) {
runtimeException.printStackTrace();
return null;
}
}
@Override
public void serialize(DateTime object, String fieldName, boolean writeFieldNameForObject, JsonGenerator jsonGenerator) throws IOException {
jsonGenerator.writeStringField(fieldName, object.format("YYYY-MM-DDThh:mm:ss"));
}
}
我有一个classDbRecord
public class DbRecord {
@JsonField(name="on_duties")
List<OnDutyElement> onDuties;
@JsonField(name = "date_time")
DateTime dateTime;
当我尝试序列化此 class 的对象时,LoganSquare 不包含 dateTime 字段。
生成JSON:{:"2015-12-21T11:32:17.503-05:00","on_duties":[{...everything normal from here
可能存在错误。
编写您自己的扩展 DateTypeConverter
的 TypeConverter
,覆盖 serialize()
方法显式传递 writeFieldName
值 true
。
这将强制类型转换器将字段名称写入编写器。
如果所有 JSON 字段名称都是带下划线的小写字母,您可以这样定义 fieldNamingPolicy。
@JsonObject(fieldNamingPolicy = JsonObject.FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
public class DbRecord {
@JsonField
List<OnDutyElement> onDuties;
@JsonField
DateTime dateTime;
如果您还没有为 DateTime 设置 TypeConverter,LoganSquare 现在允许您像这样在 JsonField 注释中定义 TypeConverter
@JsonField(typeConverter = DateTimeConverter.class)
DateTime time;
和日期时间转换器
public class DateTimeConverter implements TypeConverter<DateTime> {
@Override
public DateTime parse(JsonParser jsonParser) throws IOException {
String dateString = jsonParser.getValueAsString(null);
try {
DateTime dateTime = new DateTime(dateString);
return dateTime.changeTimeZone(TimeZone.getTimeZone("UTC"), TimeZone.getDefault());
} catch (RuntimeException runtimeException) {
runtimeException.printStackTrace();
return null;
}
}
@Override
public void serialize(DateTime object, String fieldName, boolean writeFieldNameForObject, JsonGenerator jsonGenerator) throws IOException {
jsonGenerator.writeStringField(fieldName, object.format("YYYY-MM-DDThh:mm:ss"));
}
}