如何将重定向请求的json类型输入转换为POJO?

时间:2013-10-13 01:51:01

标签: java json jackson restlet

我想写一个简单的方法,它接收一个代表POJO的json并使用该POJO。

示例(接收并返回POJO):

@Put("json")
public Representation b(JacksonRepresentation<Device> deviceRepresentation)
        throws IOException {
    Device device = deviceRepresentation.getObject();
    // Use the device
    return new JacksonRepresentation<Device>(device);
}

以上示例引发异常:属性的冲突setter定义&#34; locationRef&#34; ...

另一种选择是使用JsonRepresentation,但我找不到将其转换为POJO的方法:

@Put("json")
public Representation b(JsonRepresentation jsonRepresentation) {
    // How to convert the jsonRepresentation to a POJO???
    return new JsonRepresentation(new Device("2", 2));
}

杰克逊听起来是一个更好的工具,因为它具有通用性,因此具有更多类型的安全性 - 只要它能起作用......

1 个答案:

答案 0 :(得分:3)

需要使用任何表示对象。以下工作非常精彩,在后台使用 jackson

@Put
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public Device b(Device device) {
    // Do something with the POJO!!!
    return device;
}

它转换输入并转换输出。这是一个如何工作的卷曲示例:

curl -i -X PUT -H 'Content-Type: application/json' -d '{"port":3,"ip":"3"}' http://localhost:8888/restlet/

结果:

HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
Date: Sun, 13 Oct 2013 02:03:48 GMT
Accept-Ranges: bytes
Server: Development/1.0
Vary: Accept-Charset, Accept-Encoding, Accept-Language, Accept
Cache-Control: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Length: 19

{"ip":"3","port":3}