【发布时间】:2017-04-26 12:07:03
【问题描述】:
我有一个接受 JSON 作为正文请求的 java API(rest)。 我需要将 body 映射到一个 java 类,但是其中一个 JSON 属性是 JSON 本身,我无法预测它的结构。
例如,这是资源:
@POST
public void paymentInfo(PaymentInfoEntity paymentInfoEntity)
throws JsonGenerationException, JsonMappingException, IOException {
...
}
这是一个 JSON 示例:
{
progressive: 123,
params: { [another valid JSON node] }
}
这就是我想要的实体:
public class PaymentInfoEntity {
public Integer progressive;
public JsonNode params;
}
使用这个配置,我有这个错误:
org.codehaus.jackson.map.JsonMappingException: 无法构造 com.fasterxml.jackson.databind.JsonNode 的实例,问题:抽象 类型只能用额外的类型信息来实例化
如果我声明 BaseJsonNode params 而不是 JsonNode params,则会出现同样的错误。
如果我改为声明Object params,它会起作用。
然后我如何从中解析 JSON?在这种情况下,params.toString() 是 {key1=stringvalue1, key2=stringvalue2} 而不是 {key1: "stringvalue1", key2: "stringvalue2"}。
实现我的目标的最佳选择是什么? 谢谢!
【问题讨论】:
标签: java json rest post jackson