首页 > 解决方案 > JSON 字段名称可以以数字开头吗?

问题描述

我有这个 JSON 转换为 XML 的问题,我试图弄清楚,但不确定它是 JSON 问题还是转换为 XML 问题。

{
  "AutomaticRenewalFlag" : "false",
  "2ndTierCeid" : "7rfqz",
  "BillingFrequency" : "12"
}

2ndTierCeid就 JSON 而言,这里的第二个字段是否有效 ( )?

我在我们正在使用的应用程序中收到以下错误:

转换 JSON 失败,错误为:java.io.IOException: org.xml.sax.SAXParseException: 元素的内容必须由格式正确的字符数据或标记组成。

标签: jsonxmldata-conversion

解决方案


简短回答: JSON 字段名称可能以数字开头;XML 元素名称可能没有


细节

JSON 对 a的第一个字符没有唯一的限制member string

member ::= ws string ws ':' element

string ::= '"' characters '"'

characters ::= "" | character characters

character ::= '0020' . '10FFFF' - '"' - '\' | '\' escape

XML 不允许标签名称以数字开头:

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 不以数字开头。


推荐阅读