gpt4 book ai didi

java - 如何在 Jersey REST 服务方法参数上使用 jackson mixin

转载 作者:行者123 更新时间:2023-11-30 06:53:14 24 4
gpt4 key购买 nike

我的一个 java 类存在 Jackson 反序列化问题,该类来自没有默认构造函数的第三方 API。为了克服这个问题,我使用了 JacksonMixIn它工作得很好。但问题是我在 Jersey API 上实现了一个 REST 端点,它接受上述类之一作为从客户端到服务器端的方法参数。因此,在反序列化时,它会抛出以下错误。

No suitable constructor found for type [simple type, class net.rcarz.jiraclient.Priority]: can not instantiate from JSON object (need to add/enable type information?)
at [Source: org.glassfish.jersey.message.internal.EntityInputStream@558e8ae; line: 1, column: 454]...

受影响的类

public class TestCaseVO{
private Priority priority;
private User reporter;
}

public class Priority {
protected Priority(RestClient restclient, JSONObject json) {
super(restclient);

if (json != null)
deserialise(json);
}
}

这是用于客户端与服务器通信的对象

public class myDataObject{
private String userName;
private List<TestCaseVO> testCases;
//Getter and setters
}

泽西端点

    @POST
@Path("/bug")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public TestCaseVO attachBugForTestCase(myDataObject myDataObject){

// when deserializing to MyDataObject it thorows above error
//Handle logic
}

客户端代码片段

var myDataObject= {
"testCases": [$scope.bug.TestCaseVO],
"userName":userName}

angularJsMyService.Bug.attachBug({},myDataObject)
.$promise.then(function(data){
...
}

我的问题是,在 Jackson 反序列化 REST 方法参数之前,如何在 REST 方法参数上使用 Jackson mixin。感谢任何帮助。

最佳答案

我猜你可能没有以正确的方式将 jackson 与泽西整合起来。查看Jersey’s doc on Jackson 。在您的项目中,应该有一个类实现 ContextResolver<ObjectMapper>ObjectMapper getContext(Class<?> type) 返回的实例此类由 Jersey 的 REST 端点使用。您可以配置ObjectMapper与您的混入。

关于java - 如何在 Jersey REST 服务方法参数上使用 jackson mixin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42337739/

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