JSON stringify的replacer函数

mrphzbgm  于 2023-06-25  发布在  其他
关注(0)|答案(1)|浏览(95)

我正在尝试将一些JSON值从字符串更新为数字。我从MDN上读到了“replacer”函数,并试图使其工作。但是,对实际的JSON输出没有影响。不知道这里出了什么问题。任何帮助/建议都非常感谢。我试过了

const NUMBER_FIELDS = [
  'count',
  'age',
  'hours',
];

const payload = {
    "name":  "John Doe",
    "age": "35",
    "country": "Canada",
    "count": 4,
    "hours": "100"
}

function replacer(key, value) {
  NUMBER_FIELDS.forEach((field) => {
    if (key && key === field && typeof value === 'string') {
      return parseInt(value, 10);
    }
    return field;
  });

  return value;
 }

const postBody = JSON.stringify(payload, replacer);
bnl4lu3b

bnl4lu3b1#

你的想法是正确的,但问题是你不会从forEach回来。
只需检查键是否存在于数组中,以及它是否以数字的形式返回。

const NUMBER_FIELDS = [
  'count',
  'age',
  'hours',
];

const payload = {
    "name":  "John Doe",
    "age": "35",
    "country": "Canada",
    "count": 4,
    "hours": "100"
}

function replacer(key, value) {
  return NUMBER_FIELDS.includes(key) ? +value : value;
 }

const postBody = JSON.stringify(payload, replacer);
console.log(postBody);

相关问题