从 JSON 调用变量
我从 XML 文件中读取数据并将其存储在变量
xml
中。
稍后我将其转换为 JSON 格式并将其保存在变量
json
中。
以下是 JSON:
{
'maven2-moduleset': {
'$': {
plugin: '[email protected]'
},
actions: [''],
description: [''],
keepDependencies: ['false'],
properties: [
[Object]
],
scm: [
[Object]
]
}
}
当我尝试访问
console.log(jason.maven2-moduleset.$.scm)
它抛出了以下错误
events.js:154
throw er; // Unhandled 'error' event
^
ReferenceError: moduleset is not defined
at /NodeJS/configxml/configxml.js:20:62
at Parser.<anonymous> (/NodeJS/configxml/node_modules/xml2js/lib/xml2js.js:489:18)
at emitOne (events.js:90:13)
at Parser.emit (events.js:182:7)
at Object.onclosetag (/NodeJS/configxml/node_modules/xml2js/lib/xml2js.js:447:26)
at emit (/NodeJS/configxml/node_modules/sax/lib/sax.js:640:35)
at emitNode (/NodeJS/configxml/node_modules/sax/lib/sax.js:645:5)
at closeTag (/NodeJS/configxml/node_modules/sax/lib/sax.js:905:7)
at Object.write (/NodeJS/configxml/node_modules/sax/lib/sax.js:1452:13)
at Parser.exports.Parser.Parser.parseString (/NodeJS/configxml/node_modules/xml2js/lib/xml2js.js:508:31)
我想获取“scm”中的数据,不知道我做错了什么。可以告诉我如何在 scm 对象中显示数据吗?
这里有两个问题,但不必担心,因为都很容易修复。
问题 1 - 您不能将点表示法与带符号的键一起使用
相反,您必须使用
[]
,并将键的名称作为字符串放在里面,例如:
无效:
console.log(jason.maven2-moduleset)
有效:
console.log(jason['maven2-moduleset'])
问题 2 -
scm
不是
$
$
只有一个属性,它是
plugin
解决方案
这将起作用:
console.log(jason['maven2-moduleset'].scm)
问题是您尝试使用带有无效字符(破折号)的点符号。要解决此问题,您应该使用数组符号。例如:
jason['maven2-moduleset']['$']['scm']
无论哪种方式,它都会访问相同的值,只是格式略有不同
A JavaScript identifier must start with a letter, underscore (_), or dollar sign ($); subsequent characters can also be digits (0-9). Because JavaScript is case sensitive, letters include the characters "A" through "Z" (uppercase) and the characters "a" through "z" (lowercase). https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Grammar_and_types#Variables