我有一个数组,其中存储了来自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对象是字符串数组。 请帮我看一下键值对。
答案 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)。