我有一个奇怪的情况。我有一个文本文件,它是一个JSON对象列表,它们由换行符分隔,如下所示:
{"upSpeed": 13.860419184316857, "downSpeed": 85.93058668830014, "time": "2016-12-12T21:31:56.507318"}
{"upSpeed": 13.860419184316857, "downSpeed": 85.93058668830014, "time": "2016-12-12T21:31:56.507318"}
{"upSpeed": 13.890492898595365, "downSpeed": 87.35392034236816, "time": "2016-12-12T21:37:52.174878"}
{"upSpeed": 13.69741910903317, "downSpeed": 88.08812682966898, "time": "2016-12-12T21:41:04.688231"}
...
我使用fs.readFile(text file)
加载该文本文件,然后使用array = data.split("\n")
逐行拆分文本文件,然后将每行插入array
,创建一个名为{{1}的JSON数组}。但是,问题是当我使用array
拆分原始文本文件时,程序将生成的对象包装在任一侧的单引号(data.split("\n")
)中,从而导致无效的JSON。所以,它最终看起来像这样:
'
那么,无论如何都要避免添加单引号,结果是实际的javascript对象?我试图创建一个[ '{"upSpeed": 13.860419184316857, "downSpeed": 85.93058668830014, "time": "2016-12-12T21:31:56.507318"}',
'{"upSpeed": 13.860419184316857, "downSpeed": 85.93058668830014, "time": "2016-12-12T21:31:56.507318"}',
'{"upSpeed": 13.890492898595365, "downSpeed": 87.35392034236816, "time": "2016-12-12T21:37:52.174878"}',
'{"upSpeed": 13.69741910903317, "downSpeed": 88.08812682966898, "time": "2016-12-12T21:41:04.688231"}'
...]
循环并循环遍历数组中的每个元素并运行for
以替换单引号中的任何内容(array[i] = array[i].replace(/'/g, "");
),但这根本不起作用并返回上面显示的结果完全相同。有什么想法吗?
答案 0 :(得分:5)
您没有“带单引号的JSON”。您有一个JSON字符串列表。单引号只是节点将其写入控制台的方式。
只需单独解析每一个。
var items = data.split(/\n/).map(JSON.parse);
推荐阅读,因为我怀疑你是在混淆东西:Ben Alman的博客 - There's no such thing as a "JSON Object"。
答案 1 :(得分:1)
您是否尝试过类似:var jsonItem = JSON.parse(array[i]);