按名称访问JavaScript子属性

按名称访问JavaScript子属性,javascript,Javascript,我编写了以下JavaScript函数(一个更大的“类”的一部分),以帮助确保任何使用该对象的人都将属性值存储在“values”属性中 function _updateAttributes(attribute, value) { _attributes[attribute] = { values: { value: value }}; } 它适用于平面结构,但当我开始尝试将其用于子属性时,它会崩溃 运行以下代码后: myEntity.updateAttribute('name', 'Fr

我编写了以下JavaScript函数(一个更大的“类”的一部分),以帮助确保任何使用该对象的人都将属性值存储在“values”属性中

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对象的一部分。我同意;这太傻了。我完全同意你更干净的方法。一、 可能是滥用,在发布时剥离了其他属性,因为它们不一定与答案相关(换句话说,结构比表面上看起来更复杂)。从本质上讲,代码开始看起来很混乱(以我的拙见),但我开始认为我这样做是以牺牲代码质量为代价的。