我想通过API和httr包调用我的飞利浦Hue灯。但问题是我无法获得body
权利。我确信API有效,因为GET
调用工作正常。
例如,打开和关闭灯光的PUT
调用中的正文看起来应该与{"on":false}
完全相同。该调用看起来像PUT(url = url), body = body1)
但是,我无法在httr包的body
部分中使用它。我已经尝试过:body1 <- '{on:"false"}'
返回:"{on:\"false\"}"
,body2 <- list(on = "false")
返回$on [1] "false"
,body3 <- toJSON(body2)
返回{"on":["false"]}
。
正如您所看到的,上述选项都没有完全符合要求,并且它们都会产生额外的标点符号。知道如何在身体中准确地{"on":false}
吗?
不幸的是,我无法为您提供可重现的示例,因为没有可用的公共沙箱环境,我不希望每个人都控制我的灯;-)但是可以找到文档here。
答案 0 :(得分:3)
如果您使用toJSON
包中的jsonlite
,则可以
library(jsonlite)
PUT("https://url", body=toJSON(list(on = unbox(FALSE))))
unbox()
将阻止R向量包含在JSON数组的括号中。