gpt4 book ai didi

r - 通过 httr 提交一个明确的 NULL 参数

转载 作者:行者123 更新时间:2023-12-05 06:28:49 25 4
gpt4 key购买 nike

有没有办法通过 httrNULL 作为 JSON 参数提交?

当我执行 httr::POST("https://httpbin.org/post", body = list(a = 1, b = NULL), httr::verbose(), encode = "json ”),我在输出中看到 b = NULL 从某处的有效负载中删除,即使 list(a = 1, b = NULL) 是将现有 b 值设置为 NULL 的有效 R 列表。

在 Python 的 requests 库中,允许提交 None 参数,我使用的 API 依赖于该行为(也许不是最明智的设计选择,但它是我必须忍受的)。 httrRCurl 有什么方法可以与之交互吗?

最佳答案

看来这是body <- compact(body)引起的在 httr:::body_config .您可以通过不将正文提供为 list 来解决此问题, 但作为 character直接使用 json。

不确定下面的返回值是否完全符合您的预期,但您可以将正文作为包含 json 的字符向量直接发送:

httr::POST(
"https://httpbin.org/post",
body = '{"a":1,"b":"None"}',
httr::verbose(),
encode = "json"
)

或者,“以编程方式”:

httr::POST(
"https://httpbin.org/post",
body = jsonlite::toJSON(list(a = 1, b = "None"), auto_unbox = TRUE),
httr::verbose(),
encode = "json"
)

来自 httr:POST关于 body 参数的帮助:https://www.rdocumentation.org/packages/httr/versions/1.4.0/topics/POST

请注意 jsonlite::toJSON有几个选项可供选择,具体取决于您实际想要什么 POST作为 body :

jsonlite::toJSON(list(a = 1, b = NA), auto_unbox = TRUE)
# {"a":1,"b":null}

jsonlite::toJSON(list(a = 1, b = NULL), auto_unbox = TRUE)
# {"a":1,"b":{}}

jsonlite::toJSON(list(a = 1, b = NA_integer_), auto_unbox = TRUE)
# {"a":1,"b":"NA"}

jsonlite::toJSON(list(a = 1, b = list()), auto_unbox = TRUE)
# {"a":1,"b":[]}

关于r - 通过 httr 提交一个明确的 NULL 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54023655/

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