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>>() {});