嵌套键与json.stringify替换函数

时间:2017-08-17 15:15:52

标签: javascript

我有以下代码:

//check if there is file uploaded
$post_image = '';
if(!empty($_FILES['post_image']) && ($_FILES['post_image']['error']=='0' || $_FILES["pictures"]["error"] == UPLOAD_ERR_OK)){
    // get the file name
    $post_image = $_FILES['post_image']['name'];
    // get temp name
    $post_image_temp = $_FILES['post_image']['temp_name'];
    // code to move uploaded file to desired location on server
    if (move_uploaded_file($post_image_temp, "../images/$post_image")) {
      echo "File successfully uploaded.\n";
   } else {
      echo "File not uploaded\n";
   }
}

我得到了这个输出:

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;
});

我不明白第一个输出来自哪里。

它说密钥是一个空字符串。这是从哪里来的?

1 个答案:

答案 0 :(得分:3)

这是JSON.stringify的正常行为。来自MDN

  

replacer参数可以是函数,也可以是数组。作为一个函数,它需要两个参数,键和值被字符串化。找到密钥的对象作为replacer的this参数提供。 最初使用表示字符串化对象的空键调用,然后为要字符串化的对象或数组上的每个属性调用它。

来自standard

  
      
  1. 返回? SerializeJSONProperty(the empty String, wrapper)
  2.   

这就是JSON.stringify返回的内容。 SerializeJSONProperty需要keyvalue,并使用替换函数将其转换为JSON。