按名称访问JavaScript子属性
我编写了以下JavaScript函数(一个更大的“类”的一部分),以帮助确保任何使用该对象的人都将属性值存储在“values”属性中按名称访问JavaScript子属性,javascript,Javascript,我编写了以下JavaScript函数(一个更大的“类”的一部分),以帮助确保任何使用该对象的人都将属性值存储在“values”属性中 function _updateAttributes(attribute, value) { _attributes[attribute] = { values: { value: value }}; } 它适用于平面结构,但当我开始尝试将其用于子属性时,它会崩溃 运行以下代码后: myEntity.updateAttribute('name', 'Fr
function _updateAttributes(attribute, value) {
_attributes[attribute] = { values: { value: value }};
}
它适用于平面结构,但当我开始尝试将其用于子属性时,它会崩溃
运行以下代码后:
myEntity.updateAttribute('name', 'Frankenstein');
myEntity.updateAttribute('name.source', 'John Doe');
我想要以下结构:
{
"attributes": {
"name": {
"values": {
"value": "Frankenstein"
},
"source": {
"values": {
"value": "JohnDoe"
}
}
}
}
}
相反,结果是这样的:
{
"attributes": {
"name": {
"values": {
"value": "Frankenstein"
}
},
"name.source": {
"values": {
"value": "JohnDoe"
}
}
}
}
是否有任何干净的方法来编写此JavaScript,或者我将面临拆分字符串并手动构建结构的问题
注意:我意识到即使是首选结构也有点奇怪,但是我映射到的Java对象需要这种格式,所以我在这里没有任何选项。您必须解析字符串(
parse
有点强,只有一个带循环的拆分('.')
)
但坦率地说,更干净的方法是:
myEntity.name = {values: 'Frankenstein'};
myEntity.name.source = {values: 'John Doe'};
您必须解析字符串(
parse
有点强,只有一个带循环的split('.')
)
但坦率地说,更干净的方法是:
myEntity.name = {values: 'Frankenstein'};
myEntity.name.source = {values: 'John Doe'};
为什么你认为字符串分析(即逐点分割)是不干净的?是的,你必须这么做。为什么你认为把字符串解析(即逐点分割)是不干净的?是的,你必须这么做。我更新了我的帖子,删除了“JSON”这个词。“values”键是我的Java对象的一部分。我同意;这太傻了。我完全同意你更干净的方法。一、 可能是滥用,在发布时剥离了其他属性,因为它们不一定与答案相关(换句话说,结构比表面上看起来更复杂)。从本质上讲,代码开始变得凌乱(以我的拙见),但我开始认为我这样做是以牺牲代码质量为代价的。我更新了我的帖子,删除了“JSON”一词。“values”键是我的Java对象的一部分。我同意;这太傻了。我完全同意你更干净的方法。一、 可能是滥用,在发布时剥离了其他属性,因为它们不一定与答案相关(换句话说,结构比表面上看起来更复杂)。从本质上讲,代码开始看起来很混乱(以我的拙见),但我开始认为我这样做是以牺牲代码质量为代价的。