我目前正在将节点项目转换为DW。节点项目当前将JSON作为字符串从客户端存储,然后在客户端获取相同资源时返回application / JSON。这基本上是键/值存储重置端点。
我想用dropwizard实现相同的功能,但我不想在POJO中映射整个结构及其嵌套结构。有没有办法允许这个?我只是想用密钥将数据库中的JSON保存为数据库,我不想在java应用程序中使用数据。
由于API要求我返回一个对象,该对象应该是什么?这是我对DW的功能,因为你可以看到它希望返回一个对象。
@GET
@UnitOfWork
@Timed
@ApiOperation(value="Find value by ID", notes="Get a value object from the DAO using ID as the sole criterion")
@ApiResponses(value={
@ApiResponse(code=400, message="Invalid ID"),
@ApiResponse(code=404, message="No object found by specified ID")
})
public SomeJavaOjbectMustGoHere getSample(
@ApiParam(value="id of object to get", required=true)
@QueryParam("id")
Long id
) throws WebApplicationException {
SomeJavaOjbectMustGoHere returned = dao.get(id);
if (returned == null) throw new WebApplicationException(Response.Status.NOT_FOUND);
else return returned;
}
以下是节点的大部分代码:
module.exports = function (server) {
function createResponse(req, res, next) {
var key = req.params.name;
console.log("Creating Response for key: '" + req.params.name + "'");
// ...some validation...
if (..blah..) {
// fail out.
res.send(403, "response can not be saved without a valid key and structure.");
return next();
}
var data = JSON.stringify(req.body);
// ... store the stuff in the db...
res.send(201, "Saved");
return next();
}
function getResponse(req, res, next) {
try {
var payload = {};
// ... get the data matching the key...
res.header("Content-Type", "application/json");
res.send(200, JSON.parse(payload.toString()));
}
catch(err) {
console.log('Data not found.' + err);
res.send(200,
{
"id": Math.random().toString(36).substr(3, 8),
// ... default structure ...
});
}
return next();
}
function send(req, res, next) {
res.send('response ' + req.params.name);
return next();
}
server.post('/response/:name', createResponse);
server.put('/response', send);
server.get('/response/:name', getResponse);
server.head('/response/:name', send);
server.del('/response/:name', function rm(req, res, next) {
res.send(204);
return next();
});
}

答案 0 :(得分:1)
如果您不想创建自己的对象模型,那么杰克逊有一个JsonNode class。
如果您不想对数据执行任何操作,只需返回String
并将以下注释添加到方法中:
@Produces(MediaType.APPLICATION_JSON)