簡體   English   中英

訪問名稱具有特殊字符的字段

[英]Access to a field with name having a special character

我有一個查詢函數,返回一個JSON對象,如下所示:

[
   {
      "ID":{
         "value":"a04c0000008KH4R",
         "display":"a04c0000008KH4R",
         "dataType":"string",
         "label":"Record ID"
      },
      "Account_vod__c":{
         "value":"001c000001BCLKfAAP",
         "display":"001c000001BCLKfAAP",
         "dataType":"string",
         "label":"Account"
      },
      "Account.ID":{
         "value":"001c000001BCLKfAAP",
         "display":"001c000001BCLKfAAP",
         "dataType":"string",
         "label":"Record ID"
      },
      "Account.FirstName":{
         "value":"Abdi",
         "display":"Abdi",
         "dataType":"string",
         "label":"FirstName"
      }
   }
]

在控制台中,我想使用以下命令打印值:

console.log(JSON.stringify(k.data[0].Account.FirstName));

但這會引發錯誤:

未捕獲的TypeError:無法讀取未定義的屬性“ FirstName”

但是對於ID字段,它可以正常工作:

console.log(JSON.stringify(k.data[0].ID)); 

a04c0000008KH4R

有什么方法可以解析JSON元素,且字段名稱帶有“。”。 或其中的另一個特殊字符,例如Account.FirstName

您需要遵循以下步驟:

console.log(JSON.stringify(k.data[0]['Account.FirstName']));

是,

您將要為此使用括號符號,而不是點符號,這是您當前正在使用的符號。 嘗試這個:

console.log(JSON.stringify(k.data[0]["Account.FirstName"]));

這樣,您將使用存儲在JSON中的值(使用名為“ Account.FirstName”的鍵)來尋址該值,而不是將其作為具有FirstName屬性的Account對象尋址。

在這里出現錯誤是因為您試圖以JS解釋為另一個嵌套對象的方式訪問對象屬性。 在這里使用括號表示法會起作用,將對象鍵更改為不使用'。 作為分隔符也將起作用。

const data = '[
   {
      "ID":{
         "value":"a04c0000008KH4R",
         "display":"a04c0000008KH4R",
         "dataType":"string",
         "label":"Record ID"
      },
      "Account_vod__c":{
         "value":"001c000001BCLKfAAP",
         "display":"001c000001BCLKfAAP",
         "dataType":"string",
         "label":"Account"
      },
      "Account.ID":{
         "value":"001c000001BCLKfAAP",
         "display":"001c000001BCLKfAAP",
         "dataType":"string",
         "label":"Record ID"
      },
      "Account.FirstName":{
         "value":"Abdi",
         "display":"Abdi",
         "dataType":"string",
         "label":"FirstName"
      }
   }
]';
let parse = JSON.parse(data);

/*
This will trigger the error you get:
console.log(JSON.stringify(parse.Account.FirstName));

JS will interpret this as:
    parse: {
      Account: {
        FirstName: 'value'
    }
  }
*/
console.log(JSON.stringify(parse['Account.FirstName']));
/*
JS will interpret this correctly as 
  parse: {
    'Account.FirstName': 'value'
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM