2017-08-17 52 views
2

我有以下代碼:與json.stringify替代品功能的套疊的鍵

const result = JSON.stringify({ 
    drivingLicence: { 
    documentNumber: '3333', 
    countryOfIssue: 'UNITED_KINGDOM', 
    regionOfIssue: 'UK' 
    }, 
    mothersMaidenName: 'AAAAA', 
    nationalIdentityCard: {}, 
    nationalInsuranceNumber: 'NW 26 52 66 A', 
    passport: {} 
},(key, value) =>{ 
    console.log(typeof key + ' ' + key); 
    return value; 
}); 

我得到這樣的輸出:

console.log src/components/Submission/submissionTransformer.test.js:31 
    string 
console.log src/components/Submission/submissionTransformer.test.js:31 
    string drivingLicence 
console.log src/components/Submission/submissionTransformer.test.js:31 
    string documentNumber 
console.log src/components/Submission/submissionTransformer.test.js:31 
    string countryOfIssue 
console.log src/components/Submission/submissionTransformer.test.js:31 
    string regionOfIssue 
console.log src/components/Submission/submissionTransformer.test.js:31 
    string mothersMaidenName 
console.log src/components/Submission/submissionTransformer.test.js:31 
    string nationalIdentityCard 
console.log src/components/Submission/submissionTransformer.test.js:31 
    string nationalInsuranceNumber 
console.log src/components/Submission/submissionTransformer.test.js:31 
    string passport 

我不明白的地方,第一輸出的來源。

它說密鑰是一個空字符串。這是從哪裏來的?

回答

3

這是JSON.stringify的正常行爲。從MDN

replacer參數可以是函數或數組。作爲一個函數,它需要兩個參數,鍵和值被串化。提供密鑰的對象作爲替代者的此參數提供。 最初它被一個空鍵調用,表示正在被字符串化的對象,然後它被對象或被串化的對象或數組上的每個屬性調用。

standard

  • 返回? SerializeJSONProperty(the empty String, wrapper)
  • 這就是JSON.stringify回報。 SerializeJSONProperty需要keyvalue,它使用替代函數將其轉換爲JSON。

    +0

    神祕的是爲什麼它會傳遞一個空鍵和被串化的對象。非常困惑。謝謝你清理那個 – dagda1

    +0

    是的,我真的不明白爲什麼這應該是有用的。 – PeterMader