Java 整数不能强制转换为JsonNode
我有一个演员错误,不知道如何解决Java 整数不能强制转换为JsonNode,java,json,jackson,Java,Json,Jackson,我有一个演员错误,不知道如何解决 //get my json file as Map Map<String, JsonNode> cm = null; try { cm = mapper.readValue(new File(path), Map.class); } catch (JsonParseException e) {...} //add some key, value pairs to my map JsonNodeFactor
//get my json file as Map
Map<String, JsonNode> cm = null;
try {
cm = mapper.readValue(new File(path), Map.class);
} catch (JsonParseException e) {...}
//add some key, value pairs to my map
JsonNodeFactory factory = JsonNodeFactory.instance;
ObjectNode node = factory.objectNode();
//add to a jsonNode
node.putAll(cm);
不在映射中指定键和值的类型:
mapper.readValue(new File(path), Map.class);
结果是,杰克逊将尝试并映射到它所知道的最佳类型;对于成员名称,很简单,它是一个字符串
;对于值,它读取一个JSON数字,这个JSON数字没有小数点,它适合于int
-->整数
如果要对给定值类型进行显式序列化,必须执行以下操作:
mapper.readValue(new File(path), new TypeReference<Map<String, JsonNode>>() {});
mapper.readValue(新文件(路径),新类型引用(){});
请注意,如果您真的想阅读JSON,另一个解决方案是直接反序列化为JsonNode
——或者甚至是ObjectNode
,这样很好,因为我需要映射来添加键值对并删除一些:),ObjectNode
具有从其他ObjectNode
s中删除键/值对的方法。。。
mapper.readValue(new File(path), new TypeReference<Map<String, JsonNode>>() {});