【问题标题】:Read, Transform, Write JSON file using Node.js使用 Node.js 读取、转换、写入 JSON 文件
【发布时间】:2017-06-11 10:21:16
【问题描述】:

我有一个这样的 JSON 文件:

{
   key1: "value1",
   key2: "value2",
   key3: {
     key3_1: "value3_1",
     key3_2: "value3_2"
   }
}

我想使用 Node.js 读取 JSON 文件,在适当的地方转换键的值,并在转换完成后将生成的 JSON 写入文件。这里的挑战是值的转换通常需要几毫秒(这是一个 Web 请求/响应流)。

由于 Node.js 的异步特性,我无法思考正确的做法。

任何指针都非常感谢。

编辑
我不是在这里寻找代码示例。也许关于应该如何完成的基本思考过程会很好。我试过使用traversemodule。由于它使用this.update 更新节点,因此我无法使其与promise 一起工作(回调不允许我访问this)。

【问题讨论】:

  • 你尝试过什么,你在哪里卡住了?更好的问题在这里研究主题,尝试实施解决方案,并且仅在您遇到困难并且需要帮助解决您编写的代码的特定问题时才在此处发布,而不仅仅是要求我们从头开始为您编写代码而没有表现出任何努力完全取决于你。
  • 你判断得太早了!我不是在要求“代码”......仅仅指针就可以了。我对 Node.js 比较陌生,实际上我无法思考正确的编码方式。我以积极的态度接受你的评论。但是,如果您能跟进一个指针,我将不胜感激。
  • 你看过nodejs中的fs模块吗?那是您使用 nodejs 读取文件的地方。你在那里学到了什么?当您尝试使用其中一种功能读取文件时,您在哪里卡住了?对于我的 cmets 的直接性,我很抱歉,但是您的问题没有证据表明您为自己研究该主题付出了任何努力。在我看来,遍历模块与您描述的问题没有任何关系。读取文件,在完成回调中,解析数据,修改数据,转换回字符串,然后写出来。就是这样。
  • 他们说定义明确的问题是解决了一半的问题。我因没有解释需求问题而感到内疚。道歉!我想我会分解它并分享我一直在努力的示例代码。
  • 如果您需要帮助解决遍历代码中的this 问题,那么您必须显示您的代码。这很容易解决,但我们需要查看您的实际代码才能知道要建议什么。

标签: node.js


【解决方案1】:

异步执行此操作:

// Import fs module
const fs = require('fs');
// Read the source file.
fs.readFile('source.json', ( err, json ) => {
  // Check for error
  if( err ) {
    console.log( err );
  }
  else {
    // Note that data is a Buffer, convert to string before parsing
    var data = JSON.parse( data.toString() );
    // Modify the data.
    var result = {};
    for( var key in data ) {
      var value = data[key];
      result[key] = modify( value );
    }
    // Serialize result and write to file
    fs.writeFile('result.json', JSON.stringify( result ), ( err ) => {
      if( err ) {
        console.log( err );
      }
      else console.log('Done!');
    });
});

【讨论】:

    【解决方案2】:

    这是我的思考过程。 提出请求 -> 在请求回调中,我将异步读取文件-> 然后使用 JSON.parse 修改数据 -> 然后异步写入文件-> 然后返回响应。

    node文件api被称为fs 祝你好运!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-27
      • 1970-01-01
      • 2017-11-28
      • 1970-01-01
      • 1970-01-01
      • 2017-12-16
      • 2020-05-13
      • 2021-04-22
      相关资源
      最近更新 更多