Javascript 属性说未定义

cor*_*iKa 3 javascript

我从 Web 服务中检索了一些数据,并且能够将对象打印到控制台。

data.cashiers.forEach(c => {
    console.log('c is ' + c);
    console.log('c.name is ' + c.name);
    $('#sales_entry_cashier').append(new Option(c.name, c.uid));
});
Run Code Online (Sandbox Code Playgroud)

奇怪的是,它c完全打印,但拒绝说它c.name具有价值,如下所示:

c is {"uid":"6a661e7d-61a7-477f-b69c-f328b06819a3","name":"Admin"}      sales.js:87
c.name is undefined                                                     sales.js:88
Run Code Online (Sandbox Code Playgroud)

然后,当然,当它尝试附加名称和 uid 时它会爆炸。我怎样才能解决这个问题?显然,在输出的对象中,有 c.name,是“Admin”——为什么我不能访问该属性?

Uza*_*raf 5

你确定它是一个对象而不是序列化?

首先检查响应中的类型

console.log(typeof c)
Run Code Online (Sandbox Code Playgroud)

如果它是一个字符串,则反序列化它

c = JSON.parse(c)
Run Code Online (Sandbox Code Playgroud)

从那里去

编辑:确认它是一个字符串。

data.cashiers.forEach(c => {
    c = JSON.parse(c)
    $('#sales_entry_cashier').append(new Option(c.name, c.uid));
});
Run Code Online (Sandbox Code Playgroud)