将用户输入设置为JSON文件nodejs

时间:2017-01-25 18:44:59

标签: node.js

我有一个单独的JSON数组文件,我有我的数据,但根据用户输入我需要在我的JSON中更改三个值然后执行我的http请求。我坚持将我从用户那里获得的值分配给我预先定义的JSON数组文件。

example.json

{
  "packageName": "example",
  "packageType": "example",
  "navigationType": "example",
  "description":"",
  "consoleAccessLimit": [
    {
      "accessType": "example4",
      "accessLimit": 2
    },
    {
      "accessType": "example3",
      "accessLimit": 1
    },
    {
      "accessType": "example2",
      "accessLimit": 1
    }
  ]}

我需要更改example4的accesslimit,示例3的accesslimit和示例1的accesslimit

我的代码

function askme() {
    askDetails("Enter example1 Count:", /.+/, function(scount) {
        askDetails("Enter example 3 Count:", /.+/, function (acount) {
            askDetails("Enter example 2 Count:", /.+/,function (wcount) {
                askDetails("Enter example 4 count:",/.+/,function (price) {
                    var youexample = (require('./example/example.json'));
// how do i assign the values to my example.json 


                })

            })

        })

    });

}

请帮助大家谢谢

2 个答案:

答案 0 :(得分:0)

var fs = require('fs');
fs.readFile('data.json',function(err,content){
if(err) throw err;
  var parseJson = JSON.parse(content);
  //modify json content here
  .writeFile('data.json',JSON.stringify(parseJson),function(err){
  if(err) throw err;
  })
})

您必须读取和写入文件才能修改.json文件

答案 1 :(得分:0)

您的代码结构不是很好。您要求用户输入将更改JSON的数组值。您应该以允许问题和JSON数组更灵活的方式重构您的代码。例如,今天可能在数组中有四个值,但在一个月内可能需要更改为六个值。

for (var x=0; x < youexample.consoleAccessLimit.length; x++) {
    askDetails("Enter example"+x+" Count:", /.+/, function(count) {
        youexample.consoleAccessLimit[x].accessLimit = count;
    }
}
console.log("youexample result: ", youexample)

我在这里做的是创建一个for循环,该循环遍历consoleAccessLimit JSON中youexample数组的长度。

每次循环时,它都会运行askDetails函数,该函数获取用户输入并将结果传递给值为count的函数。然后,我们将count的值分配给与youexample.consoleAccessLimit对应的特定x索引。

由于数组中有三个项目,循环将运行三次,并将用户输入的结果分配给每个项目。

因此,如果用户为第一个输入5,然后输入9,然后输入2,那么JSON的结果最终将如下所示:

{
  "packageName": "example",
  "packageType": "example",
  "navigationType": "example",
  "description":"",
  "consoleAccessLimit": [
    {
      "accessType": "example4",
      "accessLimit": 5
    },
    {
      "accessType": "example3",
      "accessLimit": 9
    },
    {
      "accessType": "example2",
      "accessLimit": 2
    }
  ]}

打开您的Web开发人员控制台,查看console.log输出结果。