JSON 字段名称可以以数字开头吗?
Posted
技术标签:
【中文标题】JSON 字段名称可以以数字开头吗?【英文标题】:Can JSON field names start with a number? 【发布时间】:2021-12-19 04:43:19 【问题描述】:我有这个 JSON 转换为 XML 的问题,我正在试图弄清楚,但不确定是 JSON 问题还是转换为 XML 的问题。
"AutomaticRenewalFlag" : "false",
"2ndTierCeid" : "7rfqz",
"BillingFrequency" : "12"
就 JSON 而言,这里的第二个字段是否有效 (2ndTierCeid
)?
我们正在使用的应用程序中出现以下错误:
转换 JSON 失败,错误为:java.io.IOException: org.xml.sax.SAXParseException:元素的内容必须由 格式良好的字符数据或标记。
【问题讨论】:
听起来像是一个相当糟糕的 JSON 到 XML 转换器。其中有很多,其中一些是在一个周末被对 JSON 或 XML 不太了解的人搞砸的。但是,从错误消息来看,没有明显的链接表明您使用了在 XML 中无效的名称,而且可能完全不同。 【参考方案1】:简答: JSON 字段名称可以以数字开头; XML 元素名称可能不。
详情
JSON has no restrictions unique to the first character member
string
,
member ::= ws string ws ':' element string ::= '"' characters '"' characters ::= "" | character characters character ::= '0020' . '10FFFF' - '"' - '\' | '\' escape
但 XML does not allow 标记名称以数字开头:
Name ::= NameStartChar (NameChar)* NameStartChar ::= ":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF] NameChar ::= NameStartChar | "-" | "." | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]
因此,如果您希望 JSON 键到 XML 标记名称的映射未经修改,则必须限制您的 JSON 不以数字开头。
【讨论】:
以上是关于JSON 字段名称可以以数字开头吗?的主要内容,如果未能解决你的问题,请参考以下文章