访问stringify生成的json

时间:2015-12-26 02:50:41

标签: arrays json express ejs stringify

我有一个数组,其中存储了来自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;
 }

它给出了undefined。我认为这实际上不是json对象是字符串数组。 请帮我看一下键值对。

1 个答案:

答案 0 :(得分:0)

你似乎对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)