我想使用jackson json库作为通用方法,如下所示:
public MyRequest<T> tester() {
TypeReference<MyWrapper<T>> typeRef = new TypeReference<MyWrapper<T>>();
MyWrapper<T> requestWrapper = (MyWrapper<T>) JsonConverter.fromJson(jsonRequest, typeRef);
return requestWrapper.getRequest();
}
Run Code Online (Sandbox Code Playgroud)
...
public class MyWrapper<T> {
private MyRequest<T> request;
public MyRequest<T> getRequest() {
return request;
}
public void setRequest(MyRequest<T> request) {
this.request = request;
}
}
public class MyRequest{
private List<T> myobjects;
public void setMyObjects(List<T> ets) {
this.myobjects = ets;
}
@NotNull
@JsonIgnore
public T getMyObject() {
return myobjects.get(0);
}
}
Run Code Online (Sandbox Code Playgroud)
现在的问题是,当我调用请求对象内的getMyObject()时,jackson将嵌套的自定义对象作为LinkedHashMap返回.有没有什么方法可以指定需要返回T对象?例如:如果我发送了Customer类型的对象,那么应该从该列表返回Customer?
谢谢.
我有这种非常奇怪的行为:
在下面的代码中:如果我对MyLogger的调用进行注释,那么一切正常,即我将sTempNr标记化并打印4个令牌.但是如果我取消对MyLogger的调用以进行日志记录,那么只有迭代发生一次,并且在其他测试类中使用类似的代码,如下所示,循环发生超过4次,并且冗余信息被发送到MyLogger.
因此,我使用Purify工具检查以确定MyLogger中是否存在某些内存问题.找不到任何东西.MyLogger使用vaargs提取args和vfprintf调用打印.
我不确定如何进一步调试此代码.任何指导将不胜感激!.
char sTempNr[41] = "1129Z13589.2.9.10";
char *sTempStr;
sTempStr = NULL;
sTempStr = strtok(sTempNr,".");
while (sTempStr)
{
printf("in in TempStr[%s]\n",sTempStr);
//MyLogger("write","","Temp String[%s]",sTempStr);
sTempStr = strtok(NULL,".");
}
Run Code Online (Sandbox Code Playgroud)