无法访问 JSON 数组中的元素

Can't access an element in JSON array

没有人真正回答过这个问题,但是究竟如何才能使用来自 php/mysql 的 JSON return 数据直接使用 JavaScript?

这是我使用 JSON.parse 并将其保存到 Javascript 变量后的 return 数据 obj

[{"stuid":"10-00002","stuname":"Meratis, Velino","stucourse":"Arts","stustat":"0","stulyear":"4","stulog":"feb 16 2017"},{"stuid":"10-00003","stuname":"Melker, Alana","stucourse":"Wilderness","stustat":"1","stulyear":"5","stulog":"feb 16 2017"}]

我试过简单的 obj.stuname 但它 return 只是一个 undefined 我已经尝试了很多次来理解它,但我似乎无法使用这个数组根本。 有人可以帮忙吗?

我也尝试过 reObj = {"stu":obj}; 风格,但它只是 return 一个 [object Object]

所以请有人详细说明一下?

obj 是 json array,因此您必须使用其 index.

访问元素

此外,您必须使用 JSON.parse 才能将 stringjson 文本转换为 Javascript 对象。

试试这个:

var stuname=obj[0].stuname;

var obj='[{"stuid":"10-00002","stuname":"Meratis, Velino","stucourse":"Arts","stustat":"0","stulyear":"4","stulog":"feb 16 2017"},{"stuid":"10-00003","stuname":"Melker, Alana","stucourse":"Wilderness","stustat":"1","stulyear":"5","stulog":"feb 16 2017"}]';
var objParsed=JSON.parse(obj);
console.log(objParsed[0].stuname);

如果要迭代 array,请使用 forEach 方法。

var obj='[{"stuid":"10-00002","stuname":"Meratis, Velino","stucourse":"Arts","stustat":"0","stulyear":"4","stulog":"feb 16 2017"},{"stuid":"10-00003","stuname":"Melker, Alana","stucourse":"Wilderness","stustat":"1","stulyear":"5","stulog":"feb 16 2017"}]';
var objParsed=JSON.parse(obj);
objParsed.forEach(function(item){
  console.log(item.stuname);
});

  1. 如果您通过 ajax 从 php 收到此回复。 请务必将 dataType 用作 json 以获得 json 类型的响应而不是字符串。

  2. 否则你需要这样解析json数据

    obj = JSON.parse(jsonStrFromPhp);
    

然后你可以获取数据作为 obj.stuname 或 obj[0].stuname 取决于你如何从 php 返回,像这样 {"stu":obj} 或像这样 [{"stu":obj}]

当我偏头痛时...为什么我的代码是错误的结果证明即使 obj = JSON.parse(jsonStrFromPhp); 只返回一个 [object Object],[object Object] javascript 实际上可以理解小腿并返回我的变量...多么令人困惑。