Xml 以@开头的变量名导致错误:在第X行第Y列找到无效的标记@

Xml 以@开头的变量名导致错误:在第X行第Y列找到无效的标记@,xml,coldfusion,weather-api,Xml,Coldfusion,Weather Api,我正试图用国家气象局API(NOAA)的数据格式化ColdFusion页面。使用下面的ColdFusion代码,我能够转储数据 <cfhttp url="https://api.weather.gov/alerts/active/zone/ANZ335" result="weather"> <cfhttpparam name="accept" type="header" value="application/ld+json"> </cfhttp> <cf

我正试图用国家气象局API(NOAA)的数据格式化ColdFusion页面。使用下面的ColdFusion代码,我能够转储数据

<cfhttp url="https://api.weather.gov/alerts/active/zone/ANZ335" result="weather">
<cfhttpparam name="accept" type="header" value="application/ld+json">
</cfhttp>
<cfset alerts = deserializeJSON(#weather.filecontent#) /> 
导致“在第X行找到无效令牌…”错误


关于如何解决这个问题,您有什么想法吗?

使用点表示法时,必须遵守变量名。特别是:

变量名必须以字母、下划线或Unicode开头 货币符号

对于具有无效变量名的结构键,请使用关联数组表示法:

structName["keyNameInQuotes"] 
。。。或者更具体地说:

 alerts["@graph"]
同样,您也可以将点表示法与关联数组表示法混合使用。因此,这些也是有效的:

variables.alerts["@graphs"]
variables["alerts"]["@graphs"]

(知道这个问题已经有了一些答案,但现在没有时间搜索重复的线程)简言之,对于具有无效变量名的键,请使用关联数组表示法:
structName[“keyNameInQuotes”]
或<代码>警报[“@graph”]使用点表示法时,变量名必须紧跟其后:“变量名必须以字母、下划线或Unicode货币符号开头…”@Ageax。杰出的。初学者犯了错误。Thanks@Ageax您应该将此注释作为答案向下移动。@SiriusPhil另外,如果需要向下钻取,您还可以混合使用不同的注释:
警报[“@graph”][1]。引用[1][“@id”]
。即使我对
@graph1
使用引号,我仍然可以使用点符号指向
引用
,然后返回到
@id
的引号符号(以及数组元素的位置符号)。与错误无关,但反序列化结果时不需要使用
符号。只需使用
variables.alerts["@graphs"]
variables["alerts"]["@graphs"]