有没有一种自动的方法可以在不使用POJO的情况下将json有效负载反序列化为通用的JsonObject?

7uhlpewt  于 2022-11-06  发布在  其他
关注(0)|答案(1)|浏览(116)

我有一个使用简单JSON对象的rest API,即:{ "prop": "value" }

@Consumes(MediaType.APPLICATION_JSON)
public Response apiName(@HeaderParam("field1") String field1, JsonElement payload){
   ...
}

我不想为这个API或我稍后将拥有的其他API创建POJO。相反,Jersey/Gson是否有一种自动的方法将有效负载反序列化为通用的JsonElement/JsonObject?
我知道我可以做

new Gson().fromJson(payload,JsonObject.class)

在每个API的开始,但我确信有一个自动的方法来实现这一点,但我找不到任何。所有的文档/视频解释这一点,他们使用的是POJO。如果Jackson是更好的这一点,请让我知道。我不受Gson的约束。
我尝试了JsonElement和JsonObject,对于这两个元素,我得到:无法构造com.google.gson.jsonElement的示例(不存在创建者,如默认构造器):抽象类型需要Map到具体类型,具有自定义反序列化程序,或者包含其他类型信息

dtcbnfnu

dtcbnfnu1#

我不确定Gson,但Jackson肯定会工作。

...
import com.fasterxml.jackson.databind.JsonNode;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
...

@PostMapping("/create")
public JsonNode create(@RequestBody JsonNode jsonNode){
    System.out.println(jsonNode.toString());
    return jsonNode;
}

相关问题