我尝试解析第一个对象键/ val Member ID (U1)
,但具有以下JSON,但我无法定义。有什么解决办法吗?我正在从外部第三方API检索数据。
var data = { data:
[ { 'Member ID (U1)': 'monkey!',
MID: '123456',
'Advertiser Name': 'SampleAdvertiser',
'Order ID': 'ORDER12345',
'Transaction Date': '6/16/20',
'Transaction Time': '11:13:14',
SKU: 'SKU12345',
Sales: '100',
'# of Items': '1',
'Total Commission': '12.8',
'Process Date': '6/17/20',
'Process Time': '11:20:36' }]
}
data.data.forEach(transaction => {
var member_id = transaction['Member ID (U1)']
console.log(member_id) //prints undefined, expected monkey!
})
edit-事实证明,“ M”前面有一些奇怪的特殊字符。最终在for循环中复制了该字符,现在可以使用了。谢谢你这么!
答案 0 :(得分:3)
键Member ID (U1)
包含一个ZERO WIDTH NO-BREAK SPACE' (U+FEFF),因此当您尝试在没有该不可见字符的情况下访问该键时,该键是不确定的。您可以像这样访问密钥:
var member_id = transaction["\uFEFFMember ID (U1)"]
答案 1 :(得分:1)
var data = { data:
[ { 'Member ID (U1)': 'monkey!',
MID: '123456',
'Advertiser Name': 'SampleAdvertiser',
'Order ID': 'ORDER12345',
'Transaction Date': '6/16/20',
'Transaction Time': '11:13:14',
SKU: 'SKU12345',
Sales: '100',
'# of Items': '1',
'Total Commission': '12.8',
'Process Date': '6/17/20',
'Process Time': '11:20:36' }]
}
data.data.forEach(transaction => {
var member_id = transaction['Member ID (U1)'];
console.log(member_id); //prints monkey!
})
按预期工作! https://codepen.io/stewardtz/pen/rNxeREN
在单词“ Member ID(U1)”之前,单引号内有一些额外的字符。请检查我的代码笔示例(打开底部的控制台选项卡)。
答案 2 :(得分:1)
“会员ID(U1)”中有特殊/隐藏的字符。不确定字符是什么。您是如何获得数据的?
我从var数据声明中复制了键值,并粘贴到了foreach代码中,并且它可以正常工作。请参见https://jsfiddle.net/mk4q3x9L/
var data = { data:
[ { 'Member ID (U1)': 'monkey!',
MID: '123456',
'Advertiser Name': 'SampleAdvertiser',
'Order ID': 'ORDER12345',
'Transaction Date': '6/16/20',
'Transaction Time': '11:13:14',
SKU: 'SKU12345',
Sales: '100',
'# of Items': '1',
'Total Commission': '12.8',
'Process Date': '6/17/20',
'Process Time': '11:20:36' }]
}
data.data.forEach(transaction => {
var member_id = transaction['Member ID (U1)']
console.log(member_id) //prints undefined, expected monkey!
})
编辑-正如@apena指出的那样,令人反感的字符是“零宽度无间断空格”(U + FEFF)