如何在JavaScript函数中传递一组JSON数据?

5
我有以下数据集:

data = '{"a":1,"b":2,"c":3},{"a":4,"b":5,"c":6},{"a":7,"b":8,"c":9}';

我想创建一个函数,以此数据集作为参数,但参数无法读取。 这是我的操作过程:

function add(data) { alert(data); } add(data);

结果我只看到了 [object Object],[object Object] ... 等等输出。这里出了什么问题?谢谢。

1
尝试使用控制台而不是警告框,你将获得预期的结果。 - Mahedi Sabuj
没问题。你正在传递一个对象列表并且你正在接收它。 - emerson.marini
警告尝试将数据转换为字符串,而object.toString()是"[object Object]",因此请尝试从数据中提取值,然后执行alert。 - Rahul R.
5个回答

6
JSON字符串有误,实际应该是:
var data = '[{"a":1,"b":2,"c":3},{"a":4,"b":5,"c":6},{"a":7,"b":8,"c":9}]';

接下来,您需要使用以下代码将 JSON 字符串转换为 JSON 对象:

JSON.parse(d) /* d is the parameter of the method 'add()'  */

alert会输出[object Object],因为变量data本身就是一个对象。如果你想看到整个json数据,你需要这样console.log

console.log(JSON.parse(d));

查看演示


警告会给你 [object Object],但你也可以将 JSON 字符串化以通过警告显示它。 alert(JSON.stringify(JSON.parse(d))); - Juan Sanchez

2

首先,你的数据值不正确。由于它有三个对象,因此必须放在一个数组中。所以,你的数据应该是:

data = '[{"a":1,"b":2,"c":3},{"a":4,"b":5,"c":6},{"a":7,"b":8,"c":9}]';

接下来,您需要使用JSON.parse函数将字符串数据解析为JavaScript对象,然后传递该对象。

function add(data)
{ 
   alert(data);
   alert(data[0].a); //access 1ts objects a value
} 
var data = JSON.parse(data);
add(data);

0

首先,您应该将一个对象参数传递给函数,并且可以将该对象存储在数组中:

var data = []; //array
function add(d) {
 data.push(d); //add passed item to array
 console.dir(data); //this will print the whole object
}

add({"a":1,"b":2,"c":3});

console.dir() 可以让你打印出对象内的属性。


0

你可以使用 JSON.stringify()

数据需要具有 JSON 结构。

所以在你的情况下,它应该是:

var data = [{"a":1,"b":2,"c":3},{"a":4,"b":5,"c":6},{"a":7,"b":8,"c":9}]
add(JSON.stringify(data))

[{"a":1,"b":2,"c":3},{"a":4,"b":5,"c":6},{"a":7,"b":8,"c":9}] //output of JSON.Stringify()

0

我之前也遇到了同样的问题,几个小时后我使用JSON.parse(data)来解决它。像下面这样的编码:

var data = '[{"a":1,"b":2,"c":3},{"a":4,"b":5,"c":6},{"a":7,"b":8,"c":9}]';
var obj = JSON.parse(data);
obj.forEach(myFunction);
function myFunction(item, index) {
     var eachid = item.id;
     console.log("Item-id", eachid);//you will get id 
     add(eachid);
} 

你直接传递数据,所以只会得到 [objcet Object]...如果你使用 JSON.parse(data),你将会得到每个项目的 id


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接