为什么jackson-jr没有检测到dupliacte JSON密钥?

时间:2017-04-14 01:39:53

标签: java json jackson

我正在尝试使用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);

也不会抛出异常。

1 个答案:

答案 0 :(得分:1)

它是bug并已在开发分支中修复。它将包含在2.8.9和2.9.0.pr3版本中。