json对象的键带有空格和括号

时间:2020-06-17 19:37:00

标签: javascript json

我尝试解析第一个对象键/ 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循环中复制了该字符,现在可以使用了。谢谢你这么!

3 个答案:

答案 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)