Java RESTAPI使用动态JSON

Java RESTAPI使用动态JSON,java,json,rest,api,parsing,Java,Json,Rest,Api,Parsing,我有一个RESTAPI,它将有一个服务,该服务将接收可以动态更改的json @POST @Path("/my/service") public Response saveData(@ApiParam GenericObject request); 我需要捕获要存储在数据库中的所有json内容。我怎么做?如何构建GenericObject以避免引发解析器异常并捕获所有字段和子对象 Json的一个虚拟示例可能是 { "name":"John", "age":30, "cars":[ ... ] /

我有一个RESTAPI,它将有一个服务,该服务将接收可以动态更改的json

@POST
@Path("/my/service")
public Response saveData(@ApiParam GenericObject request);
我需要捕获要存储在数据库中的所有json内容。我怎么做?如何构建GenericObject以避免引发解析器异常并捕获所有字段和子对象

Json的一个虚拟示例可能是

{
"name":"John",
"age":30,
"cars":[ ... ] //Dynamic content
}

谢谢

您可以尝试下面的示例代码,它对您非常有用。初始化请求头

 try {
 HttpHeaders requestHeaders = getRequestHeaders();
 HttpEntity<RequestDto> requestEntity = new HttpEntity<>(requestDto, requestHeaders);
 ResponseEntity<String> response = restTemplate.postForEntity(baseUrl, requestEntity, 
 String.class);
 if (response != null && response.getStatusCode() == HttpStatus.OK) {
 try {
 ObjectMapper objectMapper = new ObjectMapper();                
 objectMapper.enable(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT);
 Map<?, ?> map = objectMapper.readValue(response.getBody(), Map.class);
 return new Response<ResponseDto>().buildSuccessResponse(map.toString());
 } 
catch (Exception e) {
 e.printStackTrace();
return new Response<ResponseDto>().buildErrorResponse("Failed to map response");
}}}
catch()
{
}
试试看{
HttpHeaders requestHeaders=getRequestHeaders();
HttpEntity requestEntity=新的HttpEntity(requestDto,requestHeaders);
ResponseEntity response=restTemplate.postForEntity(baseUrl、requestEntity、,
字符串(类);
if(response!=null&&response.getStatusCode()==HttpStatus.OK){
试一试{
ObjectMapper ObjectMapper=新的ObjectMapper();
enable(反序列化功能。接受\u空\u字符串\u作为\u空\u对象);
Map Map=objectMapper.readValue(response.getBody(),Map.class);
返回新的响应().buildSuccessResponse(map.toString());
} 
捕获(例外e){
e、 printStackTrace();
return new Response().buildErrorResponse(“映射响应失败”);
}}}
捕获()
{
}

根据堆栈和实际需要,您可以使用Jackson注释和@JsonAnySetter。选中此项查看Spring和MongoDB的示例。