【问题标题】:Java generics and jackson mapperJava 泛型和杰克逊映射器
【发布时间】:2017-03-06 18:58:49
【问题描述】:

您好,我有以下课程:

public class MyRequest {
}

public class MyResponse {
}

public class Request<T> {
private String code;
private T request;

public setCode(String code) {
   this.code = codel
  }

public setRequest(T request) {
   this.request = request
   }
}

以及以下服务请求方法:

public MyResponse getMyResponse(Request<MyRequest> myRequest) {
//process
try {
    ObjectMapper mapper = new ObjectMapper();
    String jsonInString = mapper.writeValueAsString(myRequest);
    System.out.println(jsonInString);
  } catch(Exception exp) {}
}

以下 Json 请求是从 JavaScript 发送的;

{
   "code":"TESTCODE",
   "request":null 
}

发送请求后,我收到了 Invalid Json 错误。谁能告诉我我的请求 Json 有什么问题或其他问题..?

【问题讨论】:

  • 如果您确定泛型实际上不是空的,那么您的问题是反序列化。这将有所帮助:stackoverflow.com/questions/11664894/…
  • 从 javascript 反序列化 JSON 的代码在哪里?
  • 使用 Firefox 的 HTTP 请求插件发送此内容。这不是完整的代码...以前没有 Java 泛型的代码运行良好.. Jackson 也用于 Spring 方面..
  • 该错误似乎与此处的代码无关,因为您根本没有 JSON。您正在尝试将对象编写为具有 JSON 结构的字符串,但这不是这里的问题

标签: java json service jackson objectmapper


【解决方案1】:

您是否将模型“请求”用作内部类。如果是的话,

  • 尝试将修饰符 static 与“请求”一起使用。
  • 或者更确切地说,将模型“请求”移到单独的类中

设计的非静态内部类包含对外部类的引用,这确实会导致反序列化问题。

http://www.cowtowncoder.com/blog/archives/2010/08/entry_411.html

【讨论】:

    猜你喜欢
    • 2012-10-01
    • 2011-10-22
    • 1970-01-01
    • 2013-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-15
    • 1970-01-01
    相关资源
    最近更新 更多