将节点.js对象设置为从文件读取的数据
Setting a Node.js Object to data read from a file
我想从文件中读取数据并将其添加到存储在内存中的对象中。文件文本中的数据.txt大致如下所示:
One: {title: 'One' ,
contributor: 'Fred',
summary: 'blah' ,
comments: 'words' },
Two: {title: 'Two' ,
contributor: 'Chris' ,
summary: 'blah blah i'm a blah' ,
comments: '' },
我正在尝试将其设置为空对象,如下所示:
var fs = require('fs');
var text = Object.create(null);
fs.readFile("./public/text.txt", "utf-8", function(error, data) {
text = { data };
});
但是,当我text
登录到控制台时,它看起来像这样:
{ data: 'One: {title: ''One'' ,'ncontributor: ''Fred'','nsummary: ''blah'' ,'ncomments: ''words'' },'n 'nTwo: {title: ''Two'' ,'ncontributor: ''Chris'' ,'nsummary: ''blah blah i''m a blah'' ,'ncomments: '''' },'n'n' }
显然,它是将data
读取为密钥。不过,我真正想要的是更像这样的东西:
{
One: {title: 'One' ,
contributor: 'Fred',
summary: 'blah' ,
comments: 'words' },
Two: {title: 'Two' ,
contributor: 'Chris' ,
summary: 'blah blah i'm a blah' ,
comments: '' },
}
这里的任何建议将不胜感激。
如果您使用的是较新版本的 Node,那么您支持 ES6。
// So your code
`text = { data }`
// is actually a shortcut for
`text = { data: data }`
这就是为什么你最终得到一个具有键数据的对象,并且该值是在文件中找到的内容的字符串版本。相反,只需在数据参数(字符串)上使用 JSON.parse,它就会将其转换为 Object,您可以将其存储在文本中。喜欢这个
var fs = require('fs');
var text = Object.create(null);
fs.readFile("./public/text.txt", "utf-8", function(error, data) {
text = JSON.parse(data);
});
您还需要使文件成为有效的 json。这意味着键需要像字符串值一样在它们周围加上引号。
{
"One": {
"title": "One" ,
"contributor": "Fred",
"summary": "blah" ,
"comments": "words"
},
"Two": {
"title": "Two" ,
"contributor": "Chris" ,
"summary": "blah blah i'm a blah" ,
"comments": ""
}
}
您要做的是使用 eval
,如果您真的不想将文件编辑为有效的 JSON 或按照建议@Spidy导出对象,这是唯一的方法。只要确保文件是有效的JavaScript,因为你给出的例子有
summary: 'blah blah i'm a blah'
但你需要逃离像i''m
这样的i'm
.
var fs = require('fs');
var text = {};
fs.readFile('./public/text.txt', 'utf-8', function (error, data) {
eval(`text = {${data}}`);
//eval('text = {' + data + '}');
});
但我不一定建议这样做,因为这允许执行任意javascript。根据文件中的数据如何到达那里,这将是一个巨大的安全风险。
相关文章:
- Javascript:检测文件读取器中是否有图像
- 从多个文件中推送文本的函数(使用html5文件读取器上传)返回数组
- 从d3.js中的文件读取json数据不起作用
- Javascript文件读取器
- 从外部javascript文件读取var并将其转换为php变量
- 在jQuery/JS中将文件读取为字符串
- Chrome应用程序:从服务器上的文件读取和写入数据
- 文件读取器无法在chrome和IE中工作
- 将节点.js对象设置为从文件读取的数据
- Django从通过网站上传的文件读取
- 在文件读取器中追加的订单问题
- 从 JavaScript 中的本地 JSON 文件读取时出错
- 是否有可能使用三个.js文件读取STEP文件
- 将文件读取到 blob 并以 JavaScript 格式显示
- 文件读取器和 Blob 的关闭编译器警告 - 无法修复它
- 使用 knex 从文件读取并插入数据库结束错误
- Corodva 文件读取执行成功和失败回调
- 文件读取器 JS 抛出对象正忙于读取 blob
- 承诺在 NodeJS 中循环和文件读取
- 无法弄清楚 $.get 上的回调以将文本文件读取到数组中