我有这个代码:
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();
}
Run Code Online (Sandbox Code Playgroud)
它可以工作,但代码看起来比必要的复杂。特别是,我想摆脱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();
}
Run Code Online (Sandbox Code Playgroud)
问题是该set方法不返回 anObjectNode而只返回a JsonNode,这会破坏方法链。
我是否忽略了一些明显的东西,还是不可能一次性创建这样的嵌套对象?
这是方法签名中的一个不幸的缺陷,但不幸的是,在不破坏现有代码的情况下不可能进行更改:如果更改签名(返回类型是签名的一部分),则使用此方法的任何现有代码都将无法加载新版本杰克逊的。
所以,是的,这是一种错误,但不幸的是,这是一个很难修复的错误。
| 归档时间: |
|
| 查看次数: |
3644 次 |
| 最近记录: |