从 json 动态获取数据时出现类型错误

TypeError while getting data to dynamically from json

本文关键字:类型 错误 数据 json 动态 获取      更新时间:2023-09-26
var testjson = [{"Student-Records":[{"Name":"John",}]}]
var sturec= names[k];
//    where names[k] is Student-Records
/* Proc 1 */  var temporaryjsondata = testjson [0][sturec];
/* Proc 2 */  var temporaryjsondata = testjson [0]["'"+sturec+"'"];
/* Proc 3 * Static data */ var temporaryjsondata = testjson [0]['Student-Records'];
alert(JSON.stringify(temporaryjsondata));

虽然 proc 3 是静态的,但工作正常,没有错误,但我需要按动态值(如 sturec)过滤它。以下proc 1 and 2会发出带有正确数据的警报,但随后给出以下错误:

在 Mozilla 中:

TypeError: temporaryjsondata is undefined

在镶边中:

Uncaught TypeError: Cannot read property '0' of undefined

任何人都可以让我知道上述方法是否存在任何错误以及如何动态获取数据。这是小提琴。虽然上面的示例在小提琴中运行良好,但在我的应用程序代码中失败。可能导致上述错误的因素是什么。

也许 jsFiddle 比你的严格客户更宽容?

var testjson = [{"Student-Records":[{"Name":"John",}]}]

"约翰"后面有一个逗号,没有任何意义。

var sturec= names[k];
- "

名称"没有定义 - 就像"k"一样。

//    where names[k] is Student-Records
/* Proc 1 */  var temporaryjsondata = testjson [0][sturec];
/* Proc 2 */  var temporaryjsondata = testjson [0]["'"+sturec+"'"];
/* Proc 3 * Static data */ var temporaryjsondata = testjson [0]['Student-Records'];

- "sturec"没有在任何地方(分别错误地)定义。
- 请删除testjson[0]之间的空格。
- ["'"+sturec+"'"]没有任何意义。要么 sturec 已经包含字符串,要么(如果它包含数字但肯定需要作为字符串)使用 [""+sturec] .

请提供实际代码,以便我们能够为您提供进一步的帮助。

而且,由于您似乎只提供了更复杂代码的一部分,并且错误消息并不真正适合您提供的代码:您是否确定警报在警报仍在范围内时尝试temporaryjsondata