【问题标题】:Push object to a JSON file subarray/object将对象推送到 JSON 文件子数组/对象
【发布时间】:2017-06-14 13:25:40
【问题描述】:

欢迎使用 JS 或 Node.js 解决方案

我有一个具有以下结构的 json 文件(我已经删除了一些不必要的部分)

{
  "post": {
    "sample_post": {
      "slug": "/sample"
    }
  }
}

我想推送一个新的对象数组,例如"sample_post",有人建议将此数组更改为

{
  "post": [{
    "sample_post": {
      "slug": "/sample"
    }
  }]
}

使用push,但出现data.push is not a function之类的错误,因为我使用jquery获取外部json我不知道这是否会导致错误

【问题讨论】:

  • 您是否已将 JSON 反序列化为实际的 JS 对象(使用数组语法),或者您是否尝试推送到 JSON 本身?
  • 好像是data.post.push
  • @Scott 我想将对象添加到 json 文件,这是一种帖子/内容数据库

标签: javascript jquery json node.js


【解决方案1】:

根据您的代码:

var data = {
  "post": {
    "sample_post": {
      "slug": "/sample"
    }
  }
}

你必须使用一个临时变量来存储新数组:

var _tmp = []
_tmp.push(data.post)

并改写您的初始数据

data.post = _tmp

【讨论】:

    【解决方案2】:

    我不确定你想要的只是:

    var test = {
      "post": {
        "sample_post": {
          "slug": "/sample"
        }
      }
    };
    
    test.post = [test.post];
    

    【讨论】:

      【解决方案3】:

      如果您准备如下所示的对象,

      var obj = {
        "post": [{
          "sample_post": {
            "slug": "/sample"
          }
        }]
      }
      

      那么您应该以任何一种方式将对象添加到“post”数组中。

      obj.post.push({"key": "value"})
      

      obj["post"].push({"key": "value"})
      

      【讨论】:

      • 谢谢你的回答,但它与我想要的情况不太匹配,想象一下数组是所有设置的数组,博客文章数据。因此,即使我将数据直接存储在 js 文件中,我仍然需要保存更改只是想今天我将一些值推送到“发布”对象,但下次我再次打开它时,它会变成原来的那个,而不是我修改的那个,所以我想在推后保存数组。你能明白我的意思吗?
      【解决方案4】:

      要使用推送功能,对象应该是数组类型。但在你的情况下,它是一个 json 对象。因此,您首先需要通过空白数组对其进行初始化来使其成为数组。即 data.post = [] 或直接使用带有所需元素的数组。在此之后,您可以在 post.push() 中使用 push。 希望这有帮助!

      【讨论】:

      • 那么有什么办法可以将json数组保存到本地数组中
      猜你喜欢
      • 2019-02-21
      • 1970-01-01
      • 1970-01-01
      • 2019-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-11
      相关资源
      最近更新 更多