输出文本文件时出现意外字符串
Unexpected string when outputting textfile
我有一些数据,我试图输出到输出文本文件。这就是我要做的:
'use strict';
var fs = require('fs');
let id = require('./ID.json');
let obj = require('./dataOut.json');
let isp = require('./isp');
let dst = require('./dst');
let dst_lat = require('./dst_lat');
let dst_lng = require('./dst_lng');
const output = [];
let i = 0;
obj.forEach(block => {
let outputOut =
' {'n',
' "_id": ' + '"' + id[i] + '",'n',
' "latlng": ['n',
' ' + dst_lat[i] + ','n',
' ' + dst_lng[i] + ''n',
' ],'n',
' "name":' + '"' + isp[i] + '",'n',
' "address":' + '"' + dst[i] + '"'n',
'},'n';
output.push(outputOut);
i++;
});
fs.writeFile('./output.json');
我希望数据看起来与变量outputOut中显示的完全一样,然而,当我运行这段代码时,我遇到了错误意外字符串。
我知道为什么我遇到这个错误,但是我想不出一个解决方法。
如何保存我的outputOut数据到一个文本文件?
您可能误解了JSON.stringify
。它接受一个javascript对象或一个有效的JSON对象,并返回它的字符串版本。您的字符串连接是不必要的。其次,您实际上错误地连接了outputOut
。var saying = "Hello" + "World";
尝试构建一个对象:
'use strict';
const fs = require('fs');
const id = require('./ID.json');
const obj = require('./dataOut.json');
const isp = require('./isp');
const dst = require('./dst');
const dst_lat = require('./dst_lat');
const dst_lng = require('./dst_lng');
const output = [];
let i = 0;
obj.forEach(block => {
let outputOut = {
"_id": id[i],
"latlng": [
dst_lat[i],
dst_lng[i],
],
"name": isp[i],
"address": dst[i],
}
output.push(outputOut);
i++;
});
fs.writeFile('./output.json', JSON.stringify(output, null, 2), 'utf-8');
这种方法更习惯也更简单。此外,它更容易阅读。让JavaScript为你完成繁重的工作,而不是编写复杂的代码,这些代码仍然可能达到相同的结果,但成本要高得多。
最后,一个更实用的方法是使用Array.prototype.map
:
'use strict';
const fs = require('fs');
const id = require('./ID.json');
const obj = require('./dataOut.json');
const isp = require('./isp');
const dst = require('./dst');
const dst_lat = require('./dst_lat');
const dst_lng = require('./dst_lng');
const output = obj.map((block, i) => {
return {
"_id": id[i],
"latlng": [
dst_lat[i],
dst_lng[i],
],
"name": isp[i],
"address": dst[i],
};
});
fs.writeFile('./output.json', JSON.stringify(output, null, 2), 'utf-8');
这种方法避免了在每次迭代中改变output
的需要,并且利用了回调函数中的索引,而不是增加计数器变量。
我看到您尝试自己创建JSON文本。问题是您没有连接字符串部分,而是使用了逗号表达式(并且没有将其放在括号中)。如果这样做,它仍然是有缺陷的,因为逗号表达式不会连接字符串,而是保留最后一个字符串)。
有一件事要记住:不要尝试创建自己的JSON表单字符串。人们已经为你做过了。您所要做的就是对这些对象进行适当的映射,并调用JSON.stringify
:
'use strict';
var fs = require('fs');
let id = require('./ID.json');
let obj = require('./dataOut.json');
let isp = require('./isp');
let dst = require('./dst');
let dst_lat = require('./dst_lat');
let dst_lng = require('./dst_lng');
const output = obj.map((block, i) => {
return {
_id: id[i],
latlng: [
dst_lat[i],
dst_lng[i]
],
name: isp[i],
address: dst[i]
};
});
fs.writeFile('./output.json', JSON.stringify(output, null, 2), 'utf-8');
除了使用的错误方法之外,如果你想在javascript中连接字符串,你需要使用+
,而不是,
let outputOut =
' {'n' +
' "_id": ' + '"' + id[i] + '",'n' +
' "latlng": ['n' +
' ' + dst_lat[i] + ','n' +
' ' + dst_lng[i] + ''n' +
' ],'n' +
' "name":' + '"' + isp[i] + '",'n' +
' "address":' + '"' + dst[i] + '"'n' +
'},'n';
output.push(outputOut);
这就是你的错误的来源。
其他已经发布的答案会告诉你做你想做的事情的正确方法
相关文章:
- 使用 JSON.parse 将字符串(变量)转换为对象,错误意外标记
- “JSON.parse(str)”返回“意外令牌c”,但str是一个字符串
- 意外的令牌:用于Javascript中的JSON字符串
- 未捕获的语法错误:带有 .append() 字符串的意外标识符
- 生成动态 HTML,使用 JavaScript 更改名称值.错误:- 意外的字符串或标识符
- 在 JavaScript 中解析日期字符串的意外结果
- 未捕获的语法错误:jQuery 字符串中意外的标记 ILLEGAL
- 铬 - 意外令牌 非法.火狐和.字符串文字
- 将变量打印到控制台时出现意外字符串:[对象窗口]
- 创建视区会导致未捕获的语法错误:意外的字符串错误
- append() jquery中意外的字符串
- 尝试将一个元素加载到另一个元素时出现意外字符串
- 意外字符串,What'这段代码错了
- 未捕获的语法错误意外字符串
- 在JS和CSS中出现意外字符串
- 流星选择器不工作,出现意外字符串错误
- 输出文本文件时出现意外字符串
- 未捕获的语法错误:我的JavaScript中出现意外字符串
- 未捕获的语法错误:我的 Javascript 代码中出现意外字符串
- 意外字符串常量