我正在尝试使用jackson-jr作为jackson-databind的轻量级替代品。我的目标是解析JSON字符串,如果它包含重复键,则解析器会失败。据我了解库,以下内容可能会引发异常:
String duplicateKeyString =
"{\"a\":1," +
"\"b\":2," +
"\"b\":3," + // <-- duplicate key
"\"c\":4}";
Map<Object, Object> json = JSON.std.with(JSON.Feature.FAIL_ON_DUPLICATE_MAP_KEYS)
.mapFrom(duplicateKeyString);
为了比较,如果我尝试类似于jackson-databind的东西,我会得到预期的IOException:
ObjectMapper om = new ObjectMapper();
om.enable(JsonParser.Feature.STRICT_DUPLICATE_DETECTION);
JsonNode node = om.readTree(duplicateKeyString);
我能发现的唯一区别是使用.mapFrom()
和.readTree()
。但是,我仍然希望在这两种情况下抛出异常。我错过了什么或者这只是一个错误吗?
更相似的电话
JSON.std.with(new JacksonJrsTreeCodec())
.with(JSON.Feature.FAIL_ON_DUPLICATE_MAP_KEYS)
.treeFrom(duplicateKeyString);
也不会抛出异常。