json объект имеет ключ с пробелами и круглыми скобками - PullRequest
0 голосов
/ 17 июня 2020

У меня есть следующее JSON Я пытаюсь разобрать ключ / значение первого объекта Member ID (U1), но получаю undefined. Любое решение по этому поводу? Я получаю данные из внешнего стороннего 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» стоит какой-то странный специальный символ. закончил копирование этого символа в l oop, и теперь он работает. Спасибо тебе!

Ответы [ 3 ]

3 голосов
/ 17 июня 2020

Ключ Member ID (U1) содержит ZERO WIDTH NO-BREAK SPACE '(U + FEFF) , поэтому, когда вы пытаетесь получить к нему доступ без этого невидимого символа, он не определен. Вы можете получить доступ к ключу следующим образом:

var member_id = transaction["\uFEFFMember ID (U1)"]

1 голос
/ 17 июня 2020

В «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!
})

Edit - Как отметил @apena, оскорбительный символ - это 'ПРОБЕЛ С НУЛЕВОЙ ШИРИНОЙ БЕЗ РАЗРЫВА' (U + FEFF )

1 голос
/ 17 июня 2020
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

У вас есть дополнительный символ в одинарных кавычках перед словами «Идентификатор участника (U1)». Пожалуйста, проверьте мой пример кода (откройте вкладку «Консоль» внизу).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...