使用 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%)"
}
爬了很多这样的产品,你可以看到price
、MRP
和rating_count
是String
类型的,我想改一下制作数字类型,我还想遍历 price
、rating_count
和 MRP
字段以删除不需要的字符。我想我可以使用 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);
});
我使用第三方抓取工具从网站上抓取了一些内容,抓取后我成功获得了一个 .json
文件。我的 json
内容如下所示:
{
"name": "Mi Band 3 (Black)",
"price": "₹ 1,899.00",
"rating_count": "22,438",
"MRP": "₹ 2,199.00",
"saved_amount": "₹ 300.00 (14%)"
}
爬了很多这样的产品,你可以看到price
、MRP
和rating_count
是String
类型的,我想改一下制作数字类型,我还想遍历 price
、rating_count
和 MRP
字段以删除不需要的字符。我想我可以使用 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);
});