在javascript中编写和读取JSON文件

时间:2017-03-23 00:58:27

标签: javascript json node.js file

所以我现在正在做一个项目,需要使用JSON存储用户首选项。我现在已经搜索了相当多的时间,但是找不到解决方案。例如,有三个变量user,permissions,serverid。我认为这样可行。

tempObject = {
    user: []
};

tempObject.user.push({perm:permissions, server:serverid});

然后我将字符串化并变成JSON。但输出结果如下:

{user[{perm:4, server:883}]}

这是我绝望的尝试将perm和服务器变量分组到单个用户ID下,所以在代码中我可以获取每个userID的权限。但正如您所看到的那样,它没有打印用户变量,只是将其更改为数组并将用户作为一个小字符串。

TL;博士 简而言之,我需要帮助才能将JSON文件写入到在UserID下存储perm和serverID的位置。

2 个答案:

答案 0 :(得分:2)

让用户成为一个对象。改变这个:

user: []

为此:

user: {}

然后像这样设置键:

user.perm = 4;
user.server = 883;

答案 1 :(得分:0)

出于安全原因,不允许客户端JavaScript写入磁盘。这听起来像你需要一个数据库。

您可以利用localStorage或cookie作为数据库的替代。

我认为你应该将users数组更改为一个对象;这种方式可以通过userID键入。

例如:

var data = {
  users: {}
};

const userID = 1234; // or could be a string like 'john_doe'
const userPermissions = { perm: 4, server: 883 };

// set the user's permissions
data.users[userID] = userPermissions;

// fetching user's permissions
const userData = data.users[userID];
console.log('User ' + userID +' has perm = ' + userData.perm + ' and server = ' + userData.server);

现在使用本地存储保存和加载此数据非常简单:

function saveData() {
  localStorage.setItem('UserData', JSON.stringify(data));
}

function loadData() {
  data = JSON.parse(localStorage.getItem('UserData'));
}