是否有一种自动方法可以将 json 有效负载反序列化为没有 POJO 的通用 JsonObject?
Is there an automatic way to deserialize a json payload into a generic JsonObject without a POJO?
我有一个休息 API 消耗一个简单的 JSON 对象,即:{ "prop": "value" }
@Consumes(MediaType.APPLICATION_JSON)
public Response apiName(@HeaderParam("field1") String field1, JsonElement payload){
...
}
我不想为此创建 POJO,也不想为我稍后将拥有的其他 API 创建 POJO。相反,Jersey/Gson 是否有一种自动方法将有效负载反序列化为通用 JsonElement/JsonObject?
我知道我能做到
new Gson().fromJson(payload,JsonObject.class)
在每个 API 的开头,但我确信有一种自动方法可以实现这一点,但我找不到任何方法。所有 docs/videos 解释这一点,他们都在使用 POJO。如果杰克逊对此更好,请告诉我。我不受 Gson 的限制。
我同时尝试了 JsonElement 和 JsonObject,我都得到了:无法构造 com.google.gson.JsonElement 的实例(没有创建者,如默认构造函数,存在):抽象类型需要映射到具体类型,具有自定义解串器,或包含额外的类型信息
我不确定 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;
}
我有一个休息 API 消耗一个简单的 JSON 对象,即:{ "prop": "value" }
@Consumes(MediaType.APPLICATION_JSON)
public Response apiName(@HeaderParam("field1") String field1, JsonElement payload){
...
}
我不想为此创建 POJO,也不想为我稍后将拥有的其他 API 创建 POJO。相反,Jersey/Gson 是否有一种自动方法将有效负载反序列化为通用 JsonElement/JsonObject?
我知道我能做到
new Gson().fromJson(payload,JsonObject.class)
在每个 API 的开头,但我确信有一种自动方法可以实现这一点,但我找不到任何方法。所有 docs/videos 解释这一点,他们都在使用 POJO。如果杰克逊对此更好,请告诉我。我不受 Gson 的限制。
我同时尝试了 JsonElement 和 JsonObject,我都得到了:无法构造 com.google.gson.JsonElement 的实例(没有创建者,如默认构造函数,存在):抽象类型需要映射到具体类型,具有自定义解串器,或包含额外的类型信息
我不确定 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;
}