私はjsonが初めてです。 jsonオブジェクトからxmlを生成するプログラムがあります。
String str = "{'name':'JSON','integer':1,'double':2.0,'boolean':true,'nested':{'id':42},'array':[1,2,3]}";
JSON json = JSONSerializer.toJSON( str );
XMLSerializer xmlSerializer = new XMLSerializer();
xmlSerializer.setTypeHintsCompatibility( false );
String xml = xmlSerializer.write( json );
System.out.println(xml);
出力は次のとおりです。
<?xml version="1.0" encoding="UTF-8"?>
<o><array json_class="array"><e json_type="number">1</e><e json_type="number">2</e><e json_type="number">3</e></array><boolean json_type="boolean">true</boolean><double json_type="number">2.0</double><integer json_type="number">1</integer><name json_type="string">JSON</name><nested json_class="object"><id json_type="number">42</id></nested></o>
私の最大の問題は、json_type = "number"の代わりに独自の属性を記述する方法と、などの独自のサブ要素を記述する方法です。
次に、json.orgの(優れた)JSON-Javaライブラリを使用します
JSONObject json = new JSONObject(str);
String xml = XML.toString(json);
toString
は、2番目の引数を取り、XMLルートノードの名前を提供できます。
このライブラリは、XML.toJSONObject(Java.lang.String string)
を使用してXMLをJSONに変換することもできます
Javadoc を確認してください
githubリポジトリ へのリンク
POM
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20160212</version>
</dependency>
新しいリンクで更新された元の投稿
Xmlに有効なdtdファイルがある場合は、eclipselink jarバイナリを使用して、jsonをxmlに、xmlをjsonに簡単に変換できます。
これを参照してください: http://www.cubicrace.com/2015/06/How-to-convert-XML-to-JSON-format.html
この記事には、参照用にダウンロードできるZipファイルとしてのサンプルプロジェクト(サポートするサードパーティのjarファイルを含む)もあります。
静的メソッドU.jsonToXml(jsonstring)を持つ nderscore-Java ライブラリがあります。私はプロジェクトのメンテナーです。 実例
import com.github.underscore.lodash.U;
public class MyClass {
public static void main(String args[]) {
String json = "{\"name\":\"JSON\",\"integer\":1,\"double\":2.0,\"boolean\":true,\"nested\":{\"id\":42},\"array\":[1,2,3]}";
System.out.println(json);
String xml = U.jsonToXml(json);
System.out.println(xml);
}
}
出力:
{"name":"JSON","integer":1,"double":2.0,"boolean":true,"nested":{"id":42},"array":[1,2,3]}
<?xml version="1.0" encoding="UTF-8"?>
<root>
<name>JSON</name>
<integer number="true">1</integer>
<double number="true">2.0</double>
<boolean boolean="true">true</boolean>
<nested>
<id number="true">42</id>
</nested>
<array number="true">1</array>
<array number="true">2</array>
<array number="true">3</array>
</root>
私が知る限り、XSLT 3.0で変換するのが唯一の適切な方法です。有効なXMLを生成することが保証されており、その時点でNice構造が作成されています。 https://www.w3.org/TR/xslt/#json
ノード値を置き換えたい場合は、次のようにします
JSONObject json = new JSONObject(str);
String xml = XML.toString(json);
xml.replace("old value", "new value");