我如何从 JAX-WS (JAX_RS) 中的 json 请求获取动态字段

How can i get dynamic field from json request in JAX-WS (JAX_RS)

我有一个 api,我收到了 json 格式的 Java pojo 请求:

{
   "migrationId" : "32n2342342j";
   "someDynamicField" : {"A" : "", 
                        "B" : ""}
} 

这个 someDynamicField 可以有不同的 属性 名称,我需要从中提取数据。
我无法为该模型设置 class,因为该字段是动态的。
但可以肯定的是someDynamicField会是字符串类型,只是名称会不同。
可以肯定的是,someDynamicField 可以是来自有限集合的字符串之一,例如:["move", "source"......] 并且这个集合将来会增长。
例如:

{
   "migrationId" : "32n2342342j";
   "move" : {"sourHost" : "", 
             "targetHost" : ""}
}

有时可以

{
   "migrationId" : "32n2342342j";
   "delete" : {"sourHost" : "", 
             "targetHost" : ""}
}

从请求中提取此信息的最佳方法是什么?
我试着看一下这个:
这里他们明确地使用了可变名称,而在我的情况下,该字段是动态的?

我会使用字符串而不是对象并使用 Jackson 解析它。这不是完整的代码,而是类似于:

@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces({MediaType.APPLICATION_JSON})
@Path("/blah")
public Response myMethod(String inputObject) {
    ObjectMapper objectMapper = new ObjectMapper();
    JsonNode jsonNode = objectMapper.readTree(inputObject);

    String migrationId = jsonNode.get("migrationId");

    if( jsonNode.has("move") ) {
        handleMoveNode(jsonNode.get("move"));
    }
    else if( jsonNode.has("delete") ) {
        handleDeleteNode(jsonNode.get("delete"));
    }
    
    // handle the other node types

    return Response.ok().build();
}

重点是在您的 JAX-RS 方法中获取一个字符串并自行解析它。