【问题标题】:org.json.XML.toJSONObjec(xmlString) converts a 010101 text value as a 4161decimalorg.json.XML.toJSONObjec(xmlString) 将 010101 文本值转换为 4161decimal
【发布时间】:2013-06-09 19:36:26
【问题描述】:

XML:

<?xml version="1.0" encoding="UTF-8"?><data><MatEiningaNumer>010101</MatEiningaNumer></data>

Java 代码:

String xmlString = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><data><MatEiningaNumer>010101</MatEiningaNumer></data>";
JSONObject json = org.json.XML.toJSONObject(xmlString);

生成的 json:

data={"MatEiningaNumer":4161}

问题在于 org.json.XML.toJSONObject(xmlString) 方法将 010101 文本值转换为 8 基编码十进制值,结果为 4161

有没有办法让这个方法不转换字符串? 仅将字符串值放入生成的 json 中?

我想到的唯一解决方案是添加一些字符串前缀,比如说“pre”。 为了让转换器相信它是一个字符串。 像这个pre010101。 并且在使用json去掉前缀的Javascript文件中。

还有其他解决方案吗?

【问题讨论】:

  • 您是否尝试过在 Java 字符串中添加引号? &lt;MatEiningaNumer&gt;\"010101\"&lt;/MatEiningaNumer&gt;
  • 没有。它不起作用。
  • 您的 DTD 对 MatEiningaNumer 有什么看法?预期的类型是什么?
  • 没有 DTD。 XML 是在 Java 代码中动态创建的。实际的 XML 更为复杂。但我想要的类型是字符串。因为它不是一个实数。它可以从零开始。

标签: java xml json


【解决方案1】:

您需要一种方法来告诉 JSON 不要将输入解析为数字,而是将其解析为字符串。如果您不能使用 DTD 并且引号不起作用,那么您可以尝试欺骗解析器。添加一个额外的字符:Z010101 以确保输入不能被解析为数字。稍后再用手剥掉“Z”。

没有其他方法可以告诉解析器将输入视为字符串吗?

【讨论】:

  • 我已经使用了您描述的带有额外前缀的方法。因为我发现没有其他方法可以告诉解析器不要将其转换为数字。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多