我发现 Jackson JSON 处理器库中的 writeNumber() 方法不一致。在启用 QUOTE_NON_NUMERIC_NUMBERS 的情况下对“NaN”调用 writeNumber(String) 无法返回带引号的字符串。这在以下示例中进行了说明:
float nan = Float.NaN;
try {
JsonGenerator jg = new JsonFactory().createGenerator(System.out);
jg.enable(JsonGenerator.Feature.QUOTE_NON_NUMERIC_NUMBERS);
// writeNumber(String s)
jg.writeNumber(""+nan);
// writeNumber(float f)
jg.writeNumber(nan);
jg.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
实际输出:
NaN "NaN"
预期输出:
"NaN" "NaN"
这是预期的行为还是错误?