javascript - JSON 语法 - 变量被解释为文字

标签 javascript json

我在 JS 函数中运行以下代码。参数 value 包含一个用户 ID 字符串:

function create_acl(value) {
    var acl = { value : { "read": true, "write": true}};
    return acl;
}

如果 value = "123"那么我期望的结果是:

{ "123": {"read": true, "write": true}}

但是,我得到的是:

{"value":{"read":true,"write":true}}

如您所见,代码将 value 解释为文字。有谁知道如何重写它以获得所需的行为?

原始问题(上图)经过一些讨论后得到扩展:

我需要创建一个包含 2 个条目的 acl,一个用于特定用户 ID,一个用于所有用户。例如

{ "4ffcfd9fe4b0211629c4ad06": { "read": true, "write": true }, "all" : { "read" : true } }

我可以使用您描述的技术生成第一个对象。我可以生成第二个条目(针对所有用户),但我不知道如何添加这两个条目来创建上面显示的结构。

最佳答案

首先——您没有使用 JSON——您使用的是 Javascript 对象字面量。

function create_acl(value) {
    var acl = {};
    acl[value] =  { "read": true, "write": true};
    return acl;
}

根据 OP 评论修改的答案:

function create_acl(value) {
    var acl = {};
    acl[value] =  { "read": true, "write": true};
    acl["*"] =  { "read": true, "write": false};
    return acl;
}

正如其他人在他们的回答中指出的那样:

var test_acl = creat_acl("foobar");
console.log(test_acl["foobar"]["read"]);
console.log(test_acl.foobar.read);
// BUT NOT
//  console.log(test_acl.*.read);
// This is OK
console.log(test_acl["*"]["read"]);
console.log(test_acl["*"].read);

关于javascript - JSON 语法 - 变量被解释为文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18295510/

相关文章:

javascript - leaflet.js 标记未显示

javascript - 按百分比调整大小的图像按钮

解析函数字符串时的 JavaScript eval() "syntax error"

javascript - 动态 Javascript/JSON 显示(游戏)服务器状态

android - 将 Json 字符串解析为 Json 数组时出错

javascript - 如何在 Typescript 项目中正确导入命名空间?

javascript - w3school 包括 HTML,javascript 不工作

javascript - jQuery inside append循环遍历Json数组

ios - Swift - 如何从模型中的 API 调用返回 json 对象以在 View Controller 中使用

json - 如何在需要等待内容加载的动态页面上使用 JSON-LD 添加结构化数据?