gpt4 book ai didi

java - 使用 Jackson 的 ObjectNode.putObject 进行方法链接

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:38:28 27 4
gpt4 key购买 nike

我有这个代码:

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,这会破坏方法链。

我是不是忽略了一些明显的东西,还是不可能一次创建这样的嵌套对象?

最佳答案

这是方法签名中的一个不幸的缺陷,但不幸的是,在不破坏现有代码的情况下不可能更改它:如果更改了签名(返回类型是签名的一部分),则使用此方法的任何现有代码都将无法加载使用更新版本的 Jackson。

所以,是的,这是一个错误,但不幸的是,这是一个很难修复的错误。

关于java - 使用 Jackson 的 ObjectNode.putObject 进行方法链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37543058/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com