我在 JavaScript 中有以下代码

var result = {
    'org.apache.struts' : '4567ty5y7u8j89hjk789',
    'firstName' : 'Thorpe',
    'surName' : 'Obazee'
}

当我尝试读取结果时:

// this works
sys.puts(result.firstName) // returns Thorpe
sys.puts(result.surName) // returns Obazee

当我阅读其他属性时,问题就出现了

sys.puts(result.org.apache.struts) // return an error

错误:预期的“类型错误:无法读取未定义的属性“ apache”

我应该如何阅读本文才能访问我输入的信息?

有帮助吗?

解决方案

您可以使用 括号表示法 访问名称包含对点表示法无效的字符的属性:

result["org.apache.struts"]

如果您想向对象添加更多级别以便可以使用点表示法,则需要为每个级别声明另一个对象,例如:

var result = {
    org: { apache: { struts: '4567ty5y7u8j89hjk789' } },
    firstName: 'Thorpe',
    surName: 'Obazee'
}

alert(result.org.apache.struts);

其他提示

问题是您将其添加为整个键而不是另一个对象,像这样访问它 result['org.apache.struts'].

或者您可以更改创建结果的方式:

var result = {
    org : {
        apache : {
            struts : '4567ty5y7u8j89hjk789'
        }
    }
    'org.apache.struts' = '4567ty5y7u8j89hjk789',
    'firstName' = 'Thorpe',
    'surName' = 'Obazee'
}

问题是你的变量中有点。我猜想 JavaScript 要求将其解释为并不真正存在的嵌套对象。所以,使用

result["org.apache.struts"]

来获取该值。

您必须在对象的标签和值之间使用“:”,并将“org.apache”定义为对象。像这样:

var result = {
    org: {apache: {struts: '4567ty5y7u8j89hjk789'}},
    firstName: 'Thorpe',
    surName: 'Obazee'
}

如果你想我们'org.apache.struts’作为一个真正的厂牌,Andy E 的回答就是解决方案。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top