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 字段名称可以以数字开头吗?的主要内容,如果未能解决你的问题,请参考以下文章

无效的字段名称“名称”。字段只能包含字母、数字和下划线,以字母或下划线开头,最多 128 个字符

如何修改数据表的表名、字段名、字段属性等信息?

database 如何查询某个字段以某个字母开头的数据

oracle 区别大小写吗

oracle数据库区分大小写吗?

MySQL数据库规约