我需要向现有的ObjectNode
中添加一个新项,给定一个键和一个值,该值在方法sig中指定为Object
,并且 * 应该 * 是ObjectNode.set()接受的类型之一。(String
,Integer
,Boolean
,etc).但我不能只做myObjectNode.set(key, value);
,因为value只是一个Object
,当然我得到一个 “不适用于参数(字符串,对象)" 错误。
我的解决方案是创建一个函数来检查instanceof
,并将其转换为ValueNode
:
private static ValueNode getValueNode(Object obj) {
if (obj instanceof Integer) {
return mapper.createObjectNode().numberNode((Integer)obj);
}
if (obj instanceof Boolean) {
return mapper.createObjectNode().booleanNode((Boolean)obj);
}
//...Etc for all the types I expect
}
字符串
然后我可以用myObjectNode.set(key, getValueNode(value));
一定有更好的办法但我找不到
我猜有一种方法可以使用ObjectMapper
,但目前我还不清楚如何使用。例如I can write the value out as a string,但我需要它作为我可以在ObjectNode上设置的东西,并且需要是正确的类型(即所有内容都不能转换为String)。
3条答案
按热度按时间vohkndzv1#
使用ObjectMapper#convertValue方法将对象转换为JsonNode示例。下面是一个示例:
字符串
输出量:
型
uxh89sit2#
使用
put()
方法要容易得多:字符串
这段代码创建了以下JSON结构:
型
mkshixfv3#
对于那些来这里寻求问题答案的人:“如何从Object创建JacksonObjectNode?"。
你可以这样做:
字符串