【问题标题】:JSON.stringify sum numbers automaticllyJSON.stringify 自动求和
【发布时间】:2020-09-03 06:17:46
【问题描述】:

我得到了一个文本文件,其中包含代表不同盒子大小的文本列表:

3x11x24
13x5x19
1x9x27
24x8x21
6x8x17
etc...

使用 node.js,我试图将它们放入一个对象中。

const fs = require('fs');

const quetion = () => {
    fs.readFile('./list.txt', (err, data) => {
        if (err) {
            console.log('error', err)
        }
    const rawData = JSON.parse(JSON.stringify(data));
    const rawList = rawData.data;
    console.log(rawList)
    })
}

quetion();

现在,当我 console.log(rawData) 到 CLI 时,我得到了这个对象:

[
   51, 120,  49,  49, 120, 50,  52,  13,  10,  49, 51, 120,
   53, 120,  49,  57,  13, 10,  49, 120,  57, 120, 50,  55,
   13,  10,  50,  52, 120, 56, 120,  50,  49,  13, 10,  54,
  120,  56, 120,  49,  55, 13,  10,  49,  57, 120, 49,  56,
  120,  50,  50,  13,  10, 49,  48, 120,  57, 120, 49,  50,
   13,  10,  49,  50, 120, 50, 120,  53,  13,  10, 50,  54,
  120,  54, 120,  49,  49, 13,  10,  57, 120,  50, 51, 120,
   49,  53,  13,  10,  49, 50, 120,  56, 120,  49, 55,  13,
   10,  49,  51, 120,
  ... 9010 more items
]

这些是从数字方程自动计算出来的 sums,由 JSON.stringify 完成。 默认情况下,如何防止 JSON.stringify 进行这些计算,以便我可以将方程作为对象内部的简单字符串?

【问题讨论】:

    标签: node.js json stringify


    【解决方案1】:
    //Replace this
    const rawData = JSON.parse(JSON.stringify(data));
    const rawList = rawData.data;
    console.log(rawList)
    
    //With this
    const list = data.toString().split("\n").filter(e=>e);
    console.log(list)
    

    解释

    你不需要对文件内容做任何json操作,因为它不是json格式的。

    你需要做的是

    1. 通过.toString()将缓冲区转换为字符串
    2. 在换行符\n 处将其拆分为数组
    3. .filter 取出空行(如果有的话)

    【讨论】:

    • 我得到了这个 - SyntaxError: Unexpected token x in JSON at position 1
    • 你的文件是什么样子的?
    • 这是一个txt文件,我复制了这个input并粘贴到那里。
    • 哦,我想我误解了你的意图
    • 我以为你在尝试解析 json
    猜你喜欢
    • 1970-01-01
    • 2014-01-13
    • 2014-07-06
    • 2018-03-10
    • 2011-08-26
    • 2015-08-15
    • 1970-01-01
    • 1970-01-01
    • 2012-09-13
    相关资源
    最近更新 更多