Java - 将JSON转换为XML以保留属性

时间:2016-06-23 21:24:51

标签: java json xml

使用org.json json库,可以很容易地从XML转换为JSON。但转换回XML总是将JSON属性转换为XML节点:

import org.json.JSONObject;
import org.json.XML;

public class Test {
    public static void main(String[] args) throws Exception {
        String xml = "<tag1 attr1=\"val1\"><tag2 attr2=\"val2\"/></tag1>";
        System.out.println(xml);

        JSONObject str = XML.toJSONObject(xml);
        System.out.println(str);

        JSONObject json = new JSONObject(str.toString());
        String xml2 = XML.toString(json);
        System.out.println(xml2);
    }
}

输出

<tag1 attr1="val1"><tag2 attr2="val2"/></tag1>
{"tag1":{"attr1":"val1","tag2":{"attr2":"val2"}}}
<tag1><attr1>val1</attr1><tag2><attr2>val2</attr2></tag2></tag1>

如何检索我的XML属性?

2 个答案:

答案 0 :(得分:0)

如果您要转换为XML

<tag1><attr1>val1</attr1><tag2><attr2>val2</attr2></tag2></tag1> 

你会得到相同的JSON结果;

{"tag1":{"attr1":"val1","tag2":{"attr2":"val2"}}}

因此从JSON转换回XML可能会导致歧义。因此,最好编写一些自定义代码,指示json字段和属性或标记。我不确定是否有用于转换的库,但此链接可能会有所帮助;

http://www.cubicrace.com/2015/06/How-to-convert-XML-to-JSON-format.html

答案 1 :(得分:0)

Underscore-java具有静态方法U.xmlToJson(stringxml)和U.jsonToXml(stringjson)。我是该项目的维护者。 Live example

import com.github.underscore.lodash.U;

public class Test {
    public static void main(String[] args) throws Exception {
        String xml = "<tag1 attr1=\"val1\"><tag2 attr2=\"val2\"/></tag1>";
        System.out.println(U.xmlToJson(xml));
        System.out.println(U.jsonToXml(U.xmlToJson(xml)));
    }
}