如何从响应中摆脱 "variant" 、 "annotations" 的 json 属性



我已经开始使用dropwizard来开发REST服务器。当资源方法返回一个EntityType(比如enrollment)时,输出如预期的那样,但是我决定使用下面的代码发送自定义状态代码Response.status(Response.Status.PRECONDITION_FAILED) .entity(Entity.json(new enrolment, AdapterResponseStatus.FAILURE))) .build();

一切正常,但输出现在包含了一些额外的额外属性,如下所示。

{ "entity": { "id": 1267, "courseId": "5798890", "userName": "user@abc.com", "tenantId": "tenant1", "status": "approved", "link": "/enrollments/null" }, "variant": { "language": null, "mediaType": { "type": "application", "subtype": "json", "parameters": { }, "wildcardType": false, "wildcardSubtype": false }, "encoding": null, "languageString": null }, "annotations": [ ], "mediaType": { "type": "application", "subtype": "json", "parameters": { }, "wildcardType": false, "wildcardSubtype": false }, "language": null, "encoding": null }

我期待"实体"属性,但得到其他属性。没有人会去消费它们,有什么办法可以摆脱它们吗?

即使我将实体对象(enrollment)替换为空字符串,也会出现这些标记。

如果你看ResponseBuilderentity方法的签名,它直接取对象;不像Jersey客户端,它需要一个特殊的Entity对象,碰巧在里面有annotationsvariants字段。

把你的代码改成:

Response.status(Response.Status.PRECONDITION_FAILED)
                .entity(new Enrolment())
                .build();

相关内容

  • 没有找到相关文章

最新更新