【发布时间】:2020-10-08 14:55:12
【问题描述】:
出于实验室目的,我必须发送一个包含其他对象的 JSON 对象,并且其中一个没有属性(空),如您所见:
{
"id": "00u12e3knx76B4PNS4x7",
"scope": "USER",
"credentials": {
"userName": "some@email.com"
},
"profile": {}
}
我正在使用 Java Jersey 和 POJO 从 JSON 有效负载生成 Java 类,但我找不到在这种情况下发送的内容符合我的 API 要求。
这是我的代码示例:
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response eventHook(String body, @HeaderParam("Pass") String password) {
ObjectMapper objectMapper = new ObjectMapper();
RequestPayload requestPayload = new RequestPayload();
writeLogger(body);
try {
requestPayload = objectMapper.readValue(body, RequestPayload.class);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
EventsItem event = requestPayload.getData().getEvents().get(0);
TargetItem targetItem = event.getTarget().get(2);
RequestApiAssignUser user = new RequestApiAssignUser();
Credentials credentials = new Credentials();
credentials.setUserName("id");
user.setId(getUser.getId());
user.setScope("USER");
user.setCredentials(credentials);
Profile profile = new Profile();
user.setProfile(profile);
Response postResponse = ClientBuilder.newClient()
.target(API_URL)
.path("apps/" + getApps("0oa13t5dqnkYGDZEd4x7") + "/users")
.request(MediaType.APPLICATION_JSON)
.header(HttpHeaders.AUTHORIZATION, "SSWS " + API_TOKEN)
.post(Entity.entity(user, MediaType.APPLICATION_JSON));
String responseAPI = postResponse.readEntity(String.class);
return Response.status(200).entity(responseAPI).build();
这是由于无法序列化配置文件对象而导致的错误,因为它没有属性:
jakarta.ws.rs.ProcessingException: com.fasterxml.jackson.databind.exc.InvalidDefinitionException:否 为类找到序列化程序 Payload.Api.Apps.Post.Assign.Request.Profile 并且没有属性 发现要创建 BeanSerializer(为避免异常,禁用 SerializationFeature.FAIL_ON_EMPTY_BEANS)(通过引用链: Payload.Api.Apps.Post.Assign.Request.RequestApiAssignUser["profile"])
谢谢!
【问题讨论】:
-
能不能把Profile类的代码也加一下?
-
它是空的,
public class Profile {} -
你看这里给出的解决方案是否有帮助stackoverflow.com/questions/25720509/…
-
不起作用
user.setProfile(objectMapper.writeValueAsString(new Profile()));需要一个对象而不是字符串
标签: java web-services jackson jersey