我有一个像这样的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.
感谢。
答案 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);
(我相信我写的是正确的。我的实际代码差异很大。)
总而言之,比我正在考虑的其他解决方案更容易解决。