【问题标题】:Angular 2 - Add data to a nested json with HTTP Post requsetAngular 2 - 使用 HTTP Post 请求将数据添加到嵌套 json
【发布时间】:2016-12-27 17:15:33
【问题描述】:

我有一个具有这种结构的 JSON 文件:

let data = [
      {
        item: '1',
        details:
          [
            {name: 'name1', address: 'address1'},
            {name: 'name2', address: 'address2'},
            {name: 'name3', address: 'address3'}
          ]
      },
      {
        item: '2',
        details:
          [
            {name: 'name1', address: 'address1'},
            {name: 'name2', address: 'address2'},
            {name: 'name3', address: 'address3'}
          ]
      }
    ];

我想添加嵌套的 JSON 对象(子对象)。 例如,要在“Item1”的详细信息中添加另一个条目,如下所示:

      item: '1',
      details:
      [
          {Name: "name1", address: 'address1 "},
          {Name: "name2", address: "address2"},
          {Name: 'name3', address: 'address3'},
        **{Name: 'name4', address: 'address4'}**
      ]

如何使用 HTTP Post 请求执行此操作? (JSON文件是本地的,我使用“InMemoryBackendService”)

【问题讨论】:

  • 你想模拟一个服务吗?如果是这样,这是用于开发还是用于单元测试?如果是用于开发,而不是 Http,您可以在写入文件后使用 Observable.from([data]) 自己创建 observable(找到一个好的文件系统包)。设置好服务后,您就可以实现 Http(假设这是您想要做的)。
  • @scottmgerstl,感谢您的评论!实际上,我的主要问题是添加一个嵌套的 JSON 对象(子对象)。我的意思是,如何为特定项目添加新的“细节”?
  • 啊,我明白了。你写的是哪个版本的javascript? ES5、ES6 或 Typescript

标签: javascript json angular angular2-http


【解决方案1】:

如果你用 Typescript 写作:

public addDetail(itemId: string, detailToAdd: any): void {
    data.find(i => i.item === itemId).details.push(detailToAdd);
}

这在 ES5 中表示为

function addDetail(itemId, detailToAdd) {
    data.find(function (i) { return i.item === itemId; }).details.push(detailToAdd);
}

【讨论】:

    猜你喜欢
    • 2015-03-19
    • 1970-01-01
    • 2016-10-16
    • 1970-01-01
    • 1970-01-01
    • 2016-09-14
    • 1970-01-01
    • 1970-01-01
    • 2017-09-21
    相关资源
    最近更新 更多