gpt4 book ai didi

java - 如何使用自定义转换器?

转载 作者:太空宇宙 更新时间:2023-11-04 10:45:51 26 4
gpt4 key购买 nike

我想解析时间

<monday>
<item>
<time>00:00:00</time>
</item>
...
</monday>

只要我捍卫项目为

@Root(strict = false) 
private static class Item {
@Element(name = "time")
@Convert(TimeConverter.class)
private Long time;
}

我的转换器

public class TimeConverter implements org.simpleframework.xml.convert.Converter<Long> {

SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss");

@Override
public Long read(InputNode node) throws Exception {
try {
String value = node.getValue();

return df.parse(value).getTime();
} catch (Exception e) {
Log.e("mcheck", "read: ", e);
return 0L;
}
}

@Override
public void write(OutputNode node, Long value) throws Exception {
try {
String v = df.format(new Date(value));
node.setValue(v);
} catch (Exception e) {
Log.e("mcheck", "write: ", e);
}
}
}

但是当我解析它时我收到

retrofit.RetrofitError: java.lang.NumberFormatException: Invalid long: "00:00:00"

由于转换器中的 try-catch block 没有捕获此异常,因此我假设解析器根本不访问转换器。

我的改造 1.9 调用

OkHttpClient httpClient = new OkHttpClient();
RestAdapter.Builder builder = new RestAdapter.Builder();
builder.setEndpoint(url);
builder.setLogLevel(RestAdapter.LogLevel.FULL);
builder.setConverter(new SimpleXMLConverter());
builder.setClient(new OkClient(httpClient));
RestAdapter restAdapter = builder.build();
ChansonApi api = restAdapter.create(ChansonApi.class);
api.getStreamProgram(new Callback<StreamProgram>() {
@Override
public void success(StreamProgram streamProgram, Response response) {
if(streamProgram!=null){
Log.e("mcheck", "success: "+streamProgram.getProgram());
}
}

@Override
public void failure(RetrofitError error) {
Log.e("mcheck", "failure: ",error);
}
});

最佳答案

问题出在混淆器设置中。我必须将 TimeConverter 添加到 -keep 类列表

关于java - 如何使用自定义转换器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48419554/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com