如何使用 R 和管道工发送 javascript 可以理解为数组而不是字符串的 json 对象?

How do I send json object that javascript can understand as array rather than string using R and plumber?

我正在尝试从 R Plumber 获取 JSON 原始响应并在 Angular 中使用它,但 JavaScript Framework 认为它是一个字符串而不是比 JSON 格式。

"[{\"id\":1,\"type\":\"Diagnostic\"},{\"id\":2,\"type\":\"Impact\"}]"

我看到了here and ,但是这些对我没有真正的帮助。

如何制作它才能使它成为 JavaScript 框架可以识别的正确 JSON 格式。

#* @apiTitle Diagnostic Report API
#* Send the list of report types
#* @get /reportTypes
#* @serializer unboxedJSON


function(){
  
  reportTypes <- read_csv(file = "ReportTypes.csv")
  # list(
  #   message_echo = paste("The text is:", "text")
  # )
} 

在 Angular 中,这是我收到的错误。鉴于这不是 Angular 所以,我只是想展示我 运行 遇到的问题:

Cannot find a differ supporting object '[{"id":1,"type":"Diagnostic"},{"id":2,"type":"Impact"}]' of type 'string'. NgFor only supports binding to Iterables such as Arrays.

这不是回答您自己的问题的最佳方式,但我发现了很多类似的问题,但没有适合我的特定解决方案。我觉得我应该写这篇文章作为对 运行 遇到类似情况的任何人的回答。希望它能为某人节省数小时的痛苦调试时间。

包括我上面提到的那些帖子在内的许多帖子都正确断言 plumber 会自动序列化 r 对象。这意味着,它应该准备好供任何请求数据使用的应用程序使用。但很明显,我缺少了一些东西。我已经尝试过基于这些的解决方案。

事实证明,我的 express.js 服务器也在将文本解析为 json

router.get('/', function (req, res) {

  request.get({ url: 'http://localhost:5762/reportTypes' },
    function (error, response, body) {
      if (!error && response.statusCode == 200) {
        res.json(body); <-- this is where it's serializing again
      }
    });

});

感谢所有 SO 社区和响应者,包括讨论 JSON 解析的 @MrFlick,它让我想到也许某处正在序列化数据。于是,挖了一下,原来我的express是把已经序列化的数据重新序列化了。只需将 res.json 更改为 res.send 即可解决问题。

希望这会给那些在 rjavascript 上工作并遇到类似问题的人一些想法,重新检查再次请求数据的代码并确保它是正确的没有得到序列化和转义重要字符。