这似乎是由httr:::body_config 中的body <- compact(body) 引起的。您可以通过不将主体提供为list,而是直接提供带有json 的character 来解决此问题。
不确定以下内容是否完全符合您的预期,但您可以将正文作为包含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 作为正文:
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":[]}