我需要给一个新项添加一个ObjectNode给定的键和值。该值被指定为Object在该方法中SIG和应该是ObjectNode.set()接受(的类型之一String,Integer,Boolean等等)。但是我不能仅仅这样做,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
}
Run Code Online (Sandbox Code Playgroud)
..然后我可以使用 myObjectNode.set(key, getValueNode(value));
一定有更好的方法,但是我很难找到它。
我猜想有一种使用方法,ObjectMapper但是目前我还不清楚。例如,我可以将值写为字符串,但是需要它作为我可以在ObjectNode上设置的值,并且需要正确的类型(即,不能将所有内容都转换为String)。