我的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);
型
该如何解决此问题?
2条答案
按热度按时间mkshixfv1#
查看code for XML.java-特别是stringToValue方法,它
字符串
下面的代码--你可以看到它首先试图解析为一个数字,在这种情况下,它会修剪前导零。为了测试,你可以尝试在你的字符串中添加一个非数字字符--我认为它会保留前导零。
看起来你看到的行为已经被放进了图书馆。这并不好,即使函数toJSONObject的文档确实警告过
型
密码:
型
编辑:这看起来像是图书馆里的一个bug。我认为应该用
型
因为当前行为错误地将具有单个前导零的值解释为数字。它正确地识别两个或更多的前导零作为一个字符串,由询问者确认。
dgiusagp2#
It works:)
在CDATA部分中添加了值,以便在从xml转换为json值时按原样显示
字符串