【问题标题】:Reading a csv File into JS Array convert to JSON将 csv 文件读入 JS 数组转换为 JSON
【发布时间】:2016-05-10 07:40:09
【问题描述】:

我正在从一个简单的 csv 文件中读取数据,并使用 Node JS fs 将一些来自 Web 服务的数据添加到一个数组中。数组定义为:

var allDataOut=[];

数据的添加发生在代码中的这一点:

var cumulate = {
            "Details":augment,
            "Timestamp": new Date(),
            data:data
        }
        allDataOut.push(cumulate);
        console.log(allDataOut);
        callback(cumulate);

根据 console.log,我看到的正是我所期望的正确数据位于 [] 内表示一个数组。

所以要创建一个 JSON,我希望 JSON.stringify(allDataOut) 会给我正确的结果。

console.log("writing file");
        var str = JSON.stringify(allDataOut);
        console.log("This is output .stringify" + str);

        fs.appendFileSync(outputFile, str, encoding='utf8');

但正如您在下面的最终数据中看到的,它仍然是数组格式。我在这个论坛上看到了很多关于这个主题的问题,其中一个建议是使用 JSON.parse(JSON.stringify(allDataOut)); - 不幸的是,似乎没有什么能改变输出。

[ {
    "Details": {
      "Name": "Tophat",
      "SegmentID": "0",
      "DistanceToDepot": "256.53"
    },
    "Timestamp": "2016-04-10T11:40:03.291Z",
    "data": {
      "metadata": {
        "language": "en-US",
        "transaction_id": "1460288403143:279662660",
        "version": "1",
        "Altitude": 49.44
      },
      "observation": {
        "class": "observation",
        "expire_time_gmt": 1460289003,
        "metric": {
          "wspd": 21,
          "gust": null,
          "vis": 9.7
        }
      }
    }   },   {
    "Details": {
      "Name": "Tophat",
      "SegmentID": "25659",
      "DistanceToDepot": "0"
    },
    "Timestamp": "2016-04-10T11:40:40.428Z",
    "data": {
      "metadata": {
        "language": "en-US",
        "transaction_id": "1460288440297:-647605523",
        "version": "1",
        "Altitude": 50.68
      },
      "observation": {
        "class": "observation",
        "expire_time_gmt": 1460288452,
        "metric": {
          "wspd": 18,
          "gust": null,
          "vis": 12.91
        }
      }
    }   } ]

【问题讨论】:

  • 数据是有效的json有什么问题。您可能想要一个包含 json 数组的 JSON 对象。您可以在jsonformatter.curiousconcept.com 上验证 json
  • 我看到的正是我所期望的正确数据位于 [] 内表示一个数组 然后 但正如您在下面的最终数据中看到的那样仍然是数组格式。你期待一个数组,但当你得到一个数组时你会感到惊讶?
  • 感谢您的澄清。这是一个 json 数组,我认为 json.stringify 会逐行转换为一系列 json 对象。我被告知用于读取此文件的应用程序将读取一个 json 对象而不是数组。我将研究如何将 json 数组转换为 json 对象。

标签: arrays json node.js


【解决方案1】:

因此,为了适应读取数据的应用程序的性质,格式需要逐行显示数据。作为 JSON 的新手,我相信这本身不会创建 JSON 数组,而是在文件中创建一系列 JSON 对象。并学习了如何在 Node JS 中进行 EOL 和迭代。 为了实现这一点,我在 stringify 中添加了一个 EOL,如下所示。

console.log("writing file");
        for(var i in allDataOut)
        {
            fs.appendFileSync(outputFile, JSON.stringify(allDataOut[i]) + '\r\n', encoding='utf8');

        }    
        console.log("done");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-01
    • 2021-01-31
    相关资源
    最近更新 更多