【问题标题】:Removing attribute when writing file to JSON将文件写入 JSON 时删除属性
【发布时间】:2017-05-08 15:28:20
【问题描述】:

我已从 API 请求数据,该数据以 JSON 格式返回,然后写入存储在 Web 服务器上的 JSON 文件。然后,我使用 Angular.js 将存储的 JSON 文件中的过滤内容显示到网页。

我用于将 API 响应写入文件的 NodeJS 代码如下:

var doNotStringify = {
  currentTarget: true,
  delegateTarget: true,
  originalEvent: true,
  target: true,
  toElement: true,
  view : true,
  count : true,
  message : true,
  error : true,
}

tl.employees.all(function(response){
 fs.writeFile(file, JSON.stringify(response, function(key, value) {
    var result = value;
    if(doNotStringify.hasOwnProperty(key)) {
        result = undefined;
    }
    return result;
 }, 4));
});

这会去除所有不需要的元素,除了“数据”。我无法删除上面函数中的数据,因为它删除了元素的内容。所以结果是下面的 JSON 文件:

{
  "Data": [{
    "FirstName": "Test1",
    "LastName": "User",
  }, {
    "FirstName": "user",
    "LastName": "user",
  }, {
    "FirstName": "Ropbert",
    "LastName": "Jones",
  }, {
    "FirstName": "Jim",
    "LastName": "Morrison",
  }]
}

当手动编辑 'Data' 元素时,它可以在 HTML/Angular 中找到,如下所示:

<td>{{player.firstName}}</td>

但是,当写入包含“数据”元素的新 JSON 文件时,它会中断并且不会显示在网页上。

所以我的问题:

有没有办法使用 fs.writeFile 和 JSON.stringify 排除“数据”元素写入文件?

或者,我可以在 Angular 中做些什么来绕过它?

【问题讨论】:

    标签: javascript angularjs json node.js api


    【解决方案1】:

    如果你只是想去掉数据部分,你可以用内容创建另一个元素。在 Angular 中,我认为你可以用你的模型做到这一点。这是一个例子(不是特定角度的):

    var playerdata = {
      "Data": [{
        "FirstName": "Test1",
        "LastName": "User",
      }, {
        "FirstName": "user",
        "LastName": "user",
      }, {
        "FirstName": "Ropbert",
        "LastName": "Jones",
      }, {
        "FirstName": "Jim",
        "LastName": "Morrison",
      }]
    };
    playerdata = playerdata["Data"];
    console.log(playerdata);
    
    playerdata.forEach(function(player){
    console.log(player.FirstName);
    })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-16
      • 2023-04-01
      • 2011-04-06
      • 2012-03-08
      • 2017-12-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多