如何在 SimpleXmlConverter 中为 Retrofit 1.9.0 设置自定义日期格式?
How to set custom Date format in SimpleXmlConverter for Retrofit 1.9.0?
我正在尝试通过 Retrofit 和 SimpleXMLConverter 解析 xml-answer 到带注释的对象并需要处理自定义格式的日期。
使用 Gson 解析 Json 非常简单。
只需通过 GsonConverter 中设置的自定义日期格式传递 GsonBuilder。
Converter converter = new GsonConverter(
new GsonBuilder().setDateFormat(CUSTOM_DATE_FORMAT_STRING).create()
);
RestAdapter.Builder builder = new RestAdapter.Builder()
.setEndpoint(URL)
.setConverter(converter);
但是当你处理 XML 和 SimpleXMLConverter 时,事情就没那么简单了。
有什么想法吗?
好吧,我找到的唯一选项是@Commit - 注释。
获取 Date 作为字符串,然后在 @Commit-annotated 方法中解析它:
public class ParsedObject {
private static final SimpleDateFormat SDF = new SimpleDateFormat(CUSTOM_DATE_FORMAT);
private Date mDate;
@Element(name = "date")
private String mXmlDate;
@Commit
private void parseDate() {
if(mXmlDate != null) {
try {
mDate = SDF.parse(mXmlDate);
} catch (ParseException e) {
// do something
} finally {
mXmlDate = null;
}
}
}
}
我正在尝试通过 Retrofit 和 SimpleXMLConverter 解析 xml-answer 到带注释的对象并需要处理自定义格式的日期。
使用 Gson 解析 Json 非常简单。 只需通过 GsonConverter 中设置的自定义日期格式传递 GsonBuilder。
Converter converter = new GsonConverter(
new GsonBuilder().setDateFormat(CUSTOM_DATE_FORMAT_STRING).create()
);
RestAdapter.Builder builder = new RestAdapter.Builder()
.setEndpoint(URL)
.setConverter(converter);
但是当你处理 XML 和 SimpleXMLConverter 时,事情就没那么简单了。 有什么想法吗?
好吧,我找到的唯一选项是@Commit - 注释。 获取 Date 作为字符串,然后在 @Commit-annotated 方法中解析它:
public class ParsedObject {
private static final SimpleDateFormat SDF = new SimpleDateFormat(CUSTOM_DATE_FORMAT);
private Date mDate;
@Element(name = "date")
private String mXmlDate;
@Commit
private void parseDate() {
if(mXmlDate != null) {
try {
mDate = SDF.parse(mXmlDate);
} catch (ParseException e) {
// do something
} finally {
mXmlDate = null;
}
}
}
}