【问题标题】:Accessing json generated by stringify访问stringify生成的json
【发布时间】:2016-03-31 19:14:57
【问题描述】:

我有一个数组,其中存储了来自 db 的数据。我已通过 stringify 将此数组转换为 JSON,结果是这样的 json:

var view_data = [{ f o o = " boo " , t e x t = "t e s t " }];

当我尝试像这样通过 for 循环访问这个 foo 对象时:

 for(var d=0; d<view_data.length; d++)
 {
   print view_data[d].foo;
 }

它给出了未定义的。我认为这实际上不是 json 对象,而是字符串数组。 请帮我访问键值对。

【问题讨论】:

  • stringify 的输出是字符串,不是对象
  • 如何将数组作为 json 对象访问

标签: arrays json express ejs stringify


【解决方案1】:

您似乎对 JSON 的含义很模糊。 JSON 是一种基于字符串的格式,用于交换数据。在 JavaScript 的正常编程过程中,它不被使用,也无关紧要,除非您以 JSON 格式向某处发送数据,或从某处接收数据。

我已通过 stringify 将此数组转换为 JSON,结果 json 如下所示:

var view_data = [{ f o o = " boo " , t e x t = "t e s t " }];

JSON.stringify 接受一个 JavaScript 对象并将其转换为基于字符串的格式。因此这是不可能的。 JSON.stringify 将始终返回一个字符串,而不是您所展示的(损坏的)JS 对象。

在您的示例数据中,您在属性名称中显示了额外的空格:"f o o" 而不是 "foo"。如果事实上这就是您尝试指定 JS 对象的方式,那么它根本不起作用。这是无效的语法。使用等号也是无效的语法;你需要一个冒号。

如果你正确定义了你的 JS 对象,那么你展示的代码就可以正常工作:

var view_data = [{foo: "boo" , text: "test"}];

for (var d=0; d<view_data.length; d++) {
  print view_data[d].foo;
}

访问stringify生成的json

您不访问由 stringify 生成的 JSON。 JSON 是一种字符串格式,仅用于与某些外部系统进行通信。

然后应该如何将数组作为 json 对象访问

没有 JSON 对象这样的东西。有 JSON,它是一个字符串;还有 JavaScript 对象。

有关 JavaScript 对象与 JSON 的更多信息,请参阅How to parse variables to JSON Object (Javascript)

【讨论】:

  • 其实我是 Js 的新手。所以,请帮忙。我有一个快递应用程序,其中有一个数组,我从 postgresql 查询中收集了数据。我希望它发送到另一个 ejs 模板。解析函数不起作用,所以我使用了 stringify。
  • 请将问题标记为 node、express 和/或 ejs。提供代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-10
  • 1970-01-01
  • 2013-01-21
  • 2018-12-15
  • 1970-01-01
  • 2017-09-10
  • 2017-11-18
相关资源
最近更新 更多