字符串JSON引用名称,而不是被引用的对象

stringify JSON reference name, not the referenced object

本文关键字:引用 对象 JSON 引用名 字符串      更新时间:2023-09-26

我有一个类似的JSON对象,(这是一个例子)

house.keys = {
    "key1" : "23456",
    "key2" : "97543",
    "key3" : "35493"
}
house.doors = [{
        "name" : "Front door",
        "lock key" : house.keys.key1
    }, {
        "name" : "Back door",
        "lock key" : house.keys.key2
    }
]

该对象作为字符串存储在DB中,并在页面加载时读取和parsed()。它可能会通过用户交互进行编辑,然后需要对更改后的对象进行stringify()-编辑并将其写回DB。除了stringify()函数中的一个问题外,我的一切都正常工作。

取而代之的是:

"lock key" : house.keys.key1

我得到这个:

"lock key" : "23456"

如何让stringify()方法返回被引用对象的名称,而不是被引用对象本身。

我已经研究过使用替换函数:

JSON.stringify(house, replacer);  // Where replacer() returns 'something else' for "lock key", but I don't know what 'something else' is.

谢谢。

只需将名称用引号括起来,这样它将被视为字符串,因此不会解析和放置值。

 house.doors = [{
     "name": "Front door",
     "lock key": "house.keys.key1"
 }, {
     "name": "Back door",
     "lock key": "house.keys.key2"
 }]

这似乎是我的问题的最佳解决方案。它确实需要更改使用"house"对象的代码。

之前,我引用了这样的密钥: var key1 = house.doors[0]["lock key"];

现在我必须使用: var key1 = house.doors[0]["lock key"]; var key1 = eval(key1);

(我相信我写对了。我的实际代码有很大不同。)

总而言之,一个比我正在考虑的其他解决方案更容易的解决方案。