所以我现在正在做一个项目,需要使用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的位置。
答案 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'));
}