JavaScript - 向JSON文件追加对象

8

我目前有一个对象:

var obj = {
        username: "James",
        surname: "Brandon",
        id: "[2]"
}

我想将其附加到 "users.json":

[
  {    
    "username": "Andy",
    "surname": "Thompson",
    "id": [0],
  },
  {    
    "username": "Moe",
    "surname": "Brown",
    "id": [1]
  }
]

你知道我怎样才能做到这个吗? 提前感谢。


1
users.push(obj)?这是假设users是你发布的第二个数组。 - slider
2
请提供有关输出 .json 的更多详细信息 - 这是要生成的文件还是输出?您是在 node.js 还是浏览器中运行? - Deian
1
你不能使用push将数据推到JSON文件的末尾。你需要先加载文件,然后使用var val = JSON.parse(textFromFile)解析它,接着你可以使用push将其推到val的末尾val.push({/*新对象*/}),然后你需要将val转换为字符串var newString = JSON.strigify(val),最后你才能将newString保存到文件中。 - Get Off My Lawn
如果文件在服务器上,就没有办法从客户端更新文件。您需要在服务器上运行代码来更新文件... - epascarello
告诉我们您想如何处理更新后的文件(通过下载使其可供客户使用,上传到服务器等)。 - David
显示剩余3条评论
2个回答

7

假设你正在使用Node.js。

据我所知,您需要解决几个不同的编程问题。

  1. read and write a .json file

    const fs = require("fs");
    let usersjson = fs.readFileSync("users.json","utf-8");
    
  2. transform a json string into a javascript array

    let users = JSON.parse(usersjson);
    
  3. append an object to an array

    users.push(obj);
    
  4. transform back the array into a json string

    usersjson = JSON.stringify(users);
    
  5. save the json file

    fs.writeFileSync("users.json",usersjson,"utf-8");
    

唯一的问题是它抱怨 require 没有定义,我不确定如何包含它。 - James Morgson
1
这个回答假设它是Node,但似乎OP并不需要Node。 - epascarello
1
users.push(obj) 不起作用,您需要先将 users 从 any 转换为 Array:const arr = Array.from(users);,然后您可以使用 arr.push(obj) 等等。 - dancus25

2
如果您的代码在浏览器中运行,而 users.json 是一个输出文件,我猜您已经可以访问它的内容了。
使用 push() 方法
此外,请注意您对象中缺少逗号。

var obj = {
        username: "James",
        surname: "Brandon",
        id: "[2]"
};

var users = [
  {    
    "username": "Andy",
    "surname": "Thompson",
    "id": [0]
  },
  {    
    "username": "Moe",
    "surname": "Brown",
    "id": [1]
  }
];

users.push(obj);
console.log( JSON.stringify(users) );

现在您已经有了更新后的对象数组,可以将其上传到服务器(请参阅此问题),或者向用户提供下载(请参阅另一个问题)。
正如您已经被告知的那样,没有直接在客户端更新服务器文件的方法。也不可能直接将其保存到客户端文件系统中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接