相关疑难解决方法(0)

如何自定义JAXB对象列表到JSON的序列化?

我正在使用Jersey为服务器组件创建REST Web服务.

我想在列表中序列化的JAXB注释对象如下所示:

@XmlRootElement(name = "distribution")
@XmlType(name = "tDistribution", propOrder = {
    "id", "name"
})
public class XMLDistribution {
    private String id;
    private String name;
    // no-args constructor, getters, setters, etc
}
Run Code Online (Sandbox Code Playgroud)

我有一个REST资源来检索一个看起来像这样的发行版:

@Path("/distribution/{id: [1-9][0-9]*}")
public class RESTDistribution {
    @GET
    @Produces("application/json")
    public XMLDistribution retrieve(@PathParam("id") String id) {
        return retrieveDistribution(Long.parseLong(id));
    }
    // business logic (retrieveDistribution(long))
}
Run Code Online (Sandbox Code Playgroud)

我还有一个REST资源来检索所有发行版的列表,如下所示:

@Path("/distributions")
public class RESTDistributions {
    @GET
    @Produces("application/json")
    public List<XMLDistribution> retrieveAll() {
        return retrieveDistributions();
    }
    // business logic (retrieveDistributions())
}
Run Code Online (Sandbox Code Playgroud)

我使用ContextResolver来自定义JAXB序列化,当前配置如下:

@Provider
@Produces("application/json")
public class …
Run Code Online (Sandbox Code Playgroud)

serialization json jax-rs jaxb jersey

54
推荐指数
2
解决办法
5万
查看次数

Jersey:无法从String中反序列化ArrayList的实例

我有一个基于json的REST Web服务实现使用:Jetty,Jersey,Jersey-JSON使用Jackson.

我的一个方法接收一个Person实例,它有一个List <String>类型的字段.即:

Public class Person {
    List<String> names;
}
Run Code Online (Sandbox Code Playgroud)

如果我用一系列名字来称呼它,一切正常!例如:

{ "names" : [ "Jhon", "Doe" ] }
Run Code Online (Sandbox Code Playgroud)

但是如果这个人只有一个名字,我的客户就会创建一个单独的值元素,例如:

{ "names" : "Jhon" } 
Run Code Online (Sandbox Code Playgroud)

当我尝试使用单个值调用服务时,我得到一个例外:

Can not deserialize instance of java.util.ArrayList out of VALUE_STRING token
Run Code Online (Sandbox Code Playgroud)

题:

我应该如何创建/配置我的Web服务,以便能够在将数组字段作为单个元素发送给我时反序列化数组字段.

-

我已经读过:

杰克逊反序列化 - 包含ArrayList <T>

如何自定义JAXB对象列表到JSON的序列化?

这是指最后一个答案:

Jersey客户端无法反序列化json服务 - 异常(无法反序列化实例)

Jaxb json缺少一个元素数组的括号

但这些都没有解决问题.

先感谢您!

java rest jax-rs jersey jackson

13
推荐指数
2
解决办法
3万
查看次数

标签 统计

jax-rs ×2

jersey ×2

jackson ×1

java ×1

jaxb ×1

json ×1

rest ×1

serialization ×1