我有这段代码:
static String createRequestJson(String apiKey, String apiSecret) {
JsonNodeFactory factory = JsonNodeFactory.instance;
ObjectNode root = factory.objectNode();
root.set("auth", factory.objectNode()
.put("api_key", apiKey)
.put("api_secret", apiSecret));
root.put("wait", true);
return root.toString();
}
它有效,但代码看起来比必要的复杂。特别是,我想摆脱root
变量。
static String createRequestJson(String apiKey, String apiSecret) {
JsonNodeFactory factory = JsonNodeFactory.instance;
return factory.objectNode()
.set("auth", factory.objectNode()
.put("api_key", apiKey)
.put("api_secret", apiSecret))
.put("wait", true) // Compile error: JsonNode.put(String, boolean) undefined
.toString();
}
问题是,set
方法不返回ObjectNode
,而只返回JsonNode
,这会破坏方法链接。
我是否忽略了一些显而易见的事情,或者是否无法一次性创建这样的嵌套对象?
答案 0 :(得分:3)
这是方法签名中的一个不幸的缺陷,但不幸的是,如果没有破坏现有代码就无法改变:如果签名被更改(返回类型是签名的一部分),使用此方法的任何现有代码都将无法加载更新版本的杰克逊。
所以,是的,这是一个各种各样的错误,但遗憾的是很难修复。