Не удается получить доступ к атрибуту внутри объекта JSON

#javascript #node.js

#javascript #node.js

Вопрос:

  1. Я создал объект record, который содержит ряд атрибутов (var record = {…})

  2. console.log (запись) дает мне:

{ 'Label': 'Test Location 3',
'Doshii Location ID': '123',
'Zip API Key': 'LBUcHlihsel7JkiCuPykiRuQ1 upbiEZuRFYU/cI/VZ7e0u0ldSkJlcD/NvTUZJCkMznQ8Wk4/qPfzfyfopzQcATzkde3H/0EQbwfJ3qWY5GZj8aK2yUNPGP rLZA3BeQOQhu4iJuZsVdno/prfG7419x78v5P1fwY8AMC6u6nSUW69bjD5dplMqdH7fQ 1gWlN0UIpMzJeY7TugELofk85DdQHxtu7/oeKiSdJ0Qs6Z/FprWEqcyUgKVHwsUBcGyIYzrGZx4Yt/GjanlhYhibPtmHyMQUseZ7x5TJodSlDxjHR8pSa6 MXLQ9xRs8Hn6COr7vVnIGMJtMkkNxmJ/g==',
'Zip Location ID': '123' }

  1. console.log(JSON.stringify(record)); дает мне:

{"Label":"Test Location 3","Doshii Location ID":"123","Zip API Key":"LBUcHlihsel7JkiCuPykiRuQ1 upbiEZuRFYU/cI/VZ7e0u0ldSkJlcD/NvTUZJCkMznQ8Wk4/qPfzfyfopzQcATzkde3H/0EQbwfJ3qWY5GZj8aK2yUNPGP rLZA3BeQOQhu4iJuZsVdno/prfG7419x78v5P1fwY8AMC6u6nSUW69bjD5dplMqdH7fQ 1gWlN0UIpMzJeY7TugELofk85DdQHxtu7/oeKiSdJ0Qs6Z/FprWEqcyUgKVHwsUBcGyIYzrGZx4Yt/GjanlhYhibPtmHyMQUseZ7x5TJodSlDxjHR8pSa6 MXLQ9xRs8Hn6COr7vVnIGMJtMkkNxmJ/g==","Zip Location ID":"123"}

  1. var label = record["Label"] ;

  2. var newLocationObj = {
    doshiiLocationId: record["Doshii Location ID"],
    label: label,
    zipApiKey: record["Zip API Key"],
    zipLocationId: record["Zip Location ID"],
    ownerUserKey: req.body.ownerUserKey,
    createdByUserKey: tokenResult.userKey,
    createdDate: currentDate,
    lastModifiedDate: currentDate
    };

  3. console.log("new location object - ",newLocationObj);

  4. Вывод:

    новый объект location — { doshiiLocationId: '123',
    label: undefined,
    zipApiKey: 'YlBEMw3YfX7uHiD8N8fjBI/Vq1IDVyjJhd1tN/gHrzIXLQ2iokJhfdx4Xuk8ovn4cFE6ftnxtDK/9WKKhEWtSVJgbBLBDhivLTe6k2y8S4e5x9QP2EQIIOM/psU CL0ECO6S UV859KOybI7MQZ4R 3wpTXeRn/k7uHX//Nnto/kqICTzh8ua4gkKRxdG2BnlvU0A54GzC MTAWvRSAmjHMOupT3PrIEv/vMnpdVqFMNk8e0Ks o6TOsYS/NEue5OKYRkPhZwhrgJj12Tz5Mphi8 XJcGSRw1X5unTmpG5q6FUF/ekv3Xig4KAvrOPJWImPSZqvIU0V4rG7Y9H uNw==',
    zipLocationId: '123',
    ownerUserKey: 'a791154f-c978-4c4d-8721-d3ee4e910fdf',
    createdByUserKey: 'a791154f-c978-4c4d-8721-d3ee4e910fdf',
    createdDate: '2019-04-03T09:53:57.724Z',
    lastModifiedDate: '2019-04-03T09:53:57.724Z' }

Я ни за что на свете не могу понять, почему label не определен… Есть идеи?

Комментарии:

1. Label перед ним стоит символ U FEFF ( пробел без разрыва нулевой ширины ) jsfiddle.net/adigas/3mac6qbr

2. Вы можете попытаться отладить это и сделать console.log(Object.keys(record)); , чтобы получить массив ключей, которые вы можете использовать для доступа к значениям свойств. Кроме того, проверьте, нет ли в ключе каких-либо невидимых Label символов

3. О, и, пожалуйста , отформатируйте свой код в сообщении, потому что теперь это катастрофа : (

Ответ №1:

Ваш Label ключ содержит следующий символ перед ним ufeff (пробел нулевой ширины без разрыва, знак порядка байтов или СПЕЦИФИКАЦИЯ).

Правильный ключ для использования, таким образом, ufeffLabel и не Label , который вернет undefined :

 const label = record['ufeffLabel'];
  

Ответ №2:

Как сказал jo_va, в вашем ключе label есть ‘ufeff’ (символ), поэтому либо удалите его, либо просто постройте объект и проанализируйте его, чтобы устранить эту проблему. введите описание изображения здесь