stringify JSON引用名称,而不是引用的对象

时间:2014-10-24 15:31:58

标签: javascript json

我有一个像这样的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()编辑并写回到数据库中。除了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.

感谢。

2 个答案:

答案 0 :(得分:2)

只需将名称括在引号中,以便将其视为字符串,因此,不会对该值进行解析和放置。

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

答案 1 :(得分:0)

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

之前,我正在引用密钥: var key1 = house.doors[0]["lock key"];

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

(我相信我写的是正确的。我的实际代码差异很大。)

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