【问题标题】:Can JSON field names start with a number?JSON 字段名称可以以数字开头吗?
【发布时间】: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 中无效的名称,而且可能完全不同。

标签: json xml data-conversion


【解决方案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 不以数字开头。

【讨论】:

    猜你喜欢
    • 2018-02-23
    • 2021-08-16
    • 1970-01-01
    • 2012-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-25
    • 1970-01-01
    相关资源
    最近更新 更多