gpt4 book ai didi

java - java中的xml到json转换问题,第一个前导零从字符串中丢弃

转载 作者:行者123 更新时间:2023-11-30 04:17:04 26 4
gpt4 key购买 nike

我的 xml 包含属性值“0123”,我想将其视为字符串,按照以下代码从 xml 转换为 json 后属性值中的前导零被丢弃。

使用的类

import org.jdom.Attribute;
import org.jdom.Document;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;
import org.json.JSONObject;
import org.json.XML;

//将xml转换为json

    org.jdom.Document jdomDocument = new Document();
org.jdom.Element Attribute = new org.jdom.Element("Attribute");
jdomDocument.setRootElement(Attribute);

org.jdom.Element valueElement = new org.jdom.Element("Value");
valueElement.setText(getValue()); // "0123"
// getValue() return anything like boolean,string,long,date, time etc..

root.addContent(valueElement);
String xmlval = new XMLOutputter(Format.getPrettyFormat()).outputString(jdomDocument);
JSONObject xmlJSONObj = XML.toJSONObject(xmlval);
String jsonPrettyPrintString = xmlJSONObj.toString(4);

如何解决这个问题?

最佳答案

查看code for XML.java - 特别是 stringToValue 方法,它执行

"Try to convert a string into a number, boolean, or null".  

代码如下 - 您可以看到它首先尝试解析为数字,在这种情况下它将修剪前导零。为了测试你可以尝试在你的字符串中添加一个非数字字符 - 我认为它会保留前导零。

看起来您所看到的行为已融入到库中。这不太好,尽管函数 toJSONObject 的文档确实发出了警告

"Some information may be lost in this transformation because JSON is a data format and XML is a document format"

代码:

// If it might be a number, try converting it. If that doesn't work,
// return the string.

try {
char initial = string.charAt(0);
boolean negative = false;
if (initial == '-') {
initial = string.charAt(1);
negative = true;
}
if (initial == '0' && string.charAt(negative ? 2 : 1) == '0') {
return string;
}
if ((initial >= '0' && initial <= '9')) {
if (string.indexOf('.') >= 0) {
return Double.valueOf(string);
} else if (string.indexOf('e') < 0 && string.indexOf('E') < 0) {
Long myLong = new Long(string);
if (myLong.longValue() == myLong.intValue()) {
return new Integer(myLong.intValue());
} else {
return myLong;
}
}
}
} catch (Exception ignore) {
}

编辑:这看起来像是库中的一个错误。我相信它应该使用

(negative ? 1 : 0)

因为当前行为错误地将带有单个前导零的值解释为数字。正如提问者所确认的,它正确地将两个或多个前导零识别为字符串。

关于java - java中的xml到json转换问题,第一个前导零从字符串中丢弃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18121714/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com