Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
泽西岛+;杰克逊&x2B;任意json_Json_Rest_Jersey_Jackson - Fatal编程技术网

泽西岛+;杰克逊&x2B;任意json

泽西岛+;杰克逊&x2B;任意json,json,rest,jersey,jackson,Json,Rest,Jersey,Jackson,我正在使用Jersey+Jackson+Guice作为我的Web应用程序。现在我想为我的客户机实现一个简单的REST调用,在这里我在服务器上接收任意JSON数据,但每次我都会遇到以下异常: org.codehaus.jackson.map.exc.UnrecognizedPropertyException:未识别字段“validTo”(类org.codehaus.jettison.json.JSONObject),未标记为可忽略|位于[来源:org.eclipse.jetty.server.Ht

我正在使用Jersey+Jackson+Guice作为我的Web应用程序。现在我想为我的客户机实现一个简单的REST调用,在这里我在服务器上接收任意JSON数据,但每次我都会遇到以下异常:

org.codehaus.jackson.map.exc.UnrecognizedPropertyException:未识别字段“validTo”(类org.codehaus.jettison.json.JSONObject),未标记为可忽略|位于[来源:org.eclipse.jetty.server.HttpConnection]$Input@1cafa346;行:1,列:25](通过引用链:org.codehaus.jettison.json.JSONObject[“validTo”])

我的方法签名如下所示:

@Override
@POST
@Consumes(MediaType.APPLICATION_JSON)
public void post(JSONObject json) throws JSONException {

}
我的GUI配置:

return Guice.createInjector(new TTShiroModule(this.servletContext),  ShiroWebModule.guiceFilterModule(),
        new ServiceModule(), new JerseyServletModule() {

          @Override
          protected void configureServlets() {
            bind(GuiceContainer.class);

            bind(MessageBodyReader.class).to(JacksonJsonProvider.class);
            bind(MessageBodyWriter.class).to(JacksonJsonProvider.class);

            serve("/rest/*").with(GuiceContainer.class, params);
          }

          @Provides
          @Singleton
          ObjectMapper objectMapper() {
            final ObjectMapper mapper = new ObjectMapper();
            return mapper;
          }

          @Provides
          @Singleton
          JacksonJsonProvider jacksonJsonProvider(ObjectMapper mapper) {
            return new JacksonJsonProvider(mapper);
          }
        });
我搜索这个异常很久了,但找不到任何帮助。我也尝试了不同的方法,但没能解决这个问题

有人能帮我吗

如果您需要更多信息,请告诉我


致以最诚挚的问候。

Jersey不会自动将json字符串打开到JSONObject,但您可以轻松地执行以下操作:

@Override
@POST
@Consumes(MediaType.APPLICATION_JSON)
public void post(String json) throws JSONException {
   JSONObject object = new JSONObject(json);

   // do things with object
}

你看到了吗?谢谢你的回复。我已经见过这个问题,但它不能解决我的问题。我不喜欢为服务器上接收到的JSON编写“包装类”,而是使用一些通用数据类型,如JSONObject,来接收不依赖任何映射的任意JSON对象。好的,谢谢,我会尝试一下!我想泽西也许能自动做到。你觉得怎么样?使用字符串和JSONObject将任意JSON数据传输到服务器是更好的方法,还是DTO是这种情况下的方法?如果您有DTO,请使用DTO,在处理运行时定义的结构时,您可能没有DTO,因此这种方法比将所有内容封装在通用的“携带所有内容”DTO中要好