使用 Node.js 更改 JSON 内容字段类型

Change JSON content field type using Node.js

我使用第三方抓取工具从网站上抓取了一些内容,抓取后我成功获得了一个 .json 文件。我的 json 内容如下所示:

  {
   "name": "Mi Band 3 (Black)",
   "price": "₹ 1,899.00",
   "rating_count": "22,438",
   "MRP": "₹ 2,199.00",
   "saved_amount": "₹ 300.00 (14%)"
  }

爬了很多这样的产品,你可以看到priceMRPrating_countString类型的,我想改一下制作数字类型,我还想遍历 pricerating_countMRP 字段以删除不需要的字符。我想我可以使用 Node.js 来做到这一点,但我是脚本语言的新手,包括 Node.js,在检查了几个 [=23] 之后,我已经使用下面的代码从 .json 文件中读取了内容=] 基础知识,并开始工作

var fs = require('fs');

 fs.readFile('run_results.json','utf8', function (err, data) {
     if (err) throw err;
     console.log('Data here =>', data);
 });

但是当我搜索时找不到适合我的情况的任何特定解决方案,请提供一些提示以完成我的任务,谢谢。

我想你有一个对象数组

const extractNumber = value => parseFloat(value.replace(/[^0-9.]/g, '')); // replace all symbols except number and decimal point, then parse it to int

const items = JSON.parse(data);

const result = items.map(item => ({
  ...item,
  price: extractNumber(item.price),
  rating_count: extractNumber(item.rating_count),
  MRP: extractNumber(item.MRP)
}));

您可以将转换函数作为参数传递给 JSON.parse 以将数字字符串转换为数字:

var fs = require('fs');

var numericKeys = ["price", "rating_count", "MRP"];

fs.readFile('run_results.json','utf8', function (err, data) {
  if (err) throw err;
  var results = JSON.parse(data, function(key, value) {
    return (numericKeys.indexOf(key) !== -1)
      ? parseFloat(value.replace(/[^0-9.]/g, ''))
      : value;
  });

  console.log(results);
});