比较来自世界各地的卖家的域名和 IT 服务价格

Java 改造实施 JSON 在 XML

有现有的 JARs, 可用于转换 JSON 在 XML?
已邀请:

董宝中

赞同来自:

你可以创建
https://github.com/stleary/JSO ... .java
, 然后将它转换为 XML, 使用
https://github.com/stleary/JSO ... .java
在命名空间中 org.json

包裹一根绳子 json 该对象与将其传递到您的设计师一样简单


JSONObject o = new JSONObject/jsonString/;


然后你可以用格式得到它 XML, 使用类 XML, 例如:


String xml = org.json.XML.toString/o/;

江南孤鹜

赞同来自:

不是 Java, 但

净销售额

XSLT 2.0 :

看一看

http://fxsl.cvs.sourceforge.ne ... Ddate


http://fxsl.sf.net
FXSL 2.x .

使用此功能,非常容易启用 JSon 并使用它就像...... XML.

例如,您可以简单地编写以下表达式 XPath:


f:json-document/$vstrParam//Students/*[sex = 'Female']




得到所有孩子
Students


sex = 'Female'


这是一个完整的例子

:


<xsl:stylesheet exclude-result-prefixes="f xs" version="2.0" xmlns:f="[url=http://fxsl.sf.net/"]http://fxsl.sf.net/"[/url] xmlns:xs="[url=http://www.w3.org/2001/XMLSchema"]http://www.w3.org/2001/XMLSchema"[/url] xmlns:xsl="[url=http://www.w3.org/1999/XSL/Transform">]http://www.w3.org/1999/XSL/Transform">[/url]
<xsl:import href="../f/func-json-document.xsl"></xsl:import>
<xsl:output indent="yes" omit-xml-declaration="yes"></xsl:output>
<xsl:variable as="xs:string" name="vstrParam">
{

"teacher":{
"name":
"Mr Borat",
"age":
"35",
"Nationality":
"Kazakhstan"
},


"Class":{
"Semester":
"Summer",
"Room":
null,
"Subject":
"Politics",
"Notes":
"We're happy, you happy?"
},

"Students":
{
"Smith":
{"First Name":"Mary","sex":"Female"},
"Brown":
{"First Name":"John","sex":"Male"},
"Jackson":
{"First Name":"Jackie","sex":"Female"}
}
,


"Grades":

{
"Test":
[
{"grade":"A","points":68,"grade":"B","points":25,"grade":"C","points":15},

{"grade":"C","points":2, "grade":"B","points":29, "grade":"A","points":55},

{"grade":"C","points":2, "grade":"A","points":72, "grade":"A","points":65}
]
}


}
</xsl:variable>
<xsl:template match="/">
<xsl:sequence select="f:json-document/$vstrParam//Students/*[sex = 'Female']"></xsl:sequence>
</xsl:template>
</xsl:stylesheet>


当上述转换适用于任何文件时 XML /忽略了/, 事实证明了正确的结果

:


<smith>
<first_name>Mary</first_name>
<sex>Female</sex>
</smith>
<jackson>
<first_name>Jackie</first_name>
<sex>Female</sex>
</jackson>

詹大官人

赞同来自:

另一个机会: Jettison,
http://jettison.codehaus.org
可能展示 Json 通过语法分析界面 XML /stax XMLStreamReader/, 这允许您将其与仅限于理解的系统集成 XML. 这需要使用惯例 /Barcuchia Fish,或者在那里叫做其他人/.

XStream, 例如,使用 Jettison /或者至少是一个獾协议/, 解决使用 JSON.

但问题本身就是一点模糊:虽然你总是可以从一个到另一个 /事实上,这是一个非常微不足道的事情。/, XML 和 JSON 不等同:没有一般显示。 one-to-one 没有损失。
因此,问题出现了:您打算如何处理结果如何使用结果 xml?

窦买办

赞同来自:

http://json-lib.sourceforge.net/
/

上述项目没有完全可靠的一维显示有效,但我的转型体验很好。 xml 在 json 使用上面的库。

小姐请别说爱

赞同来自:

你可能想要尝试 XStream. 看一看
http://x-stream.github.io/faq.html#JSON
.

詹大官人

赞同来自:

你可以试试
https://github.com/lukas-krecan/json2xml
, 它提供简单的转换 JSON 在 XML. 他采取了解析器 Jackson JSON 并使用它来生成事件 SAX.

小明明

赞同来自:

http://capsulesforthejavamind. ... .html
!!

我用 JSON, 谁dmitry把他的答案变成了 XML. 让我们看看它是否适合您 .....


import org.json.me.JSONObject;

import cjm.component.cb.xml.ToXML;

public class Test
{
public static void main/String[] args/
{
try
{
JSONObject objectJSON = new JSONObject//;

objectJSON.put/"ROOT", /new JSONObject/"{\"teacher\":{\"name\":\"Mr Borat\",\"age\":\"35\",\"Nationality\":\"Kazakhstan\"},\"Class\":{\"Semester\":\"Summer\",\"Room\":null,\"Subject\":\"Politics\",\"Notes\":\"We're happy, you happy?\"},\"Students\":{\"Smith\":{\"FirstName\":\"Mary\",\"sex\":\"Female\"},\"Brown\":{\"FirstName\":\"John\",\"sex\":\"Male\"},\"Jackson\":{\"FirstName\":\"Jackie\",\"sex\":\"Female\"}},\"Grades\":{\"Test\":[{\"grade\":\"A\",\"points\":68,\"grade\":\"B\",\"points\":25,\"grade\":\"C\",\"points\":15},{\"grade\":\"C\",\"points\":2,\"grade\":\"B\",\"points\":29,\"grade\":\"A\",\"points\":55},{\"grade\":\"C\",\"points\":2,\"grade\":\"A\",\"points\":72,\"grade\":\"A\",\"points\":65}]}}"///;

System.out.println/"JSON: " + objectJSON/;

StringBuilder xml = new ToXML//.convertToXML/objectJSON, true/; // Conversion Box!!!!

System.out.println/"XML: " + xml/;
}
catch /Exception e/
{
e.printStackTrace//;
}
}
}


输出:


JSON: {"ROOT":{"Students":{"Brown":{"FirstName":"John","sex":"Male"},"Jackson":{"FirstName":"Jackie","sex":"Female"},"Smith":{"FirstName":"Mary","sex":"Female"}},"Class":{"Subject":"Politics","Room":null,"Semester":"Summer","Notes":"We're happy, you happy?"},"Grades":{"Test":[{"points":15,"grade":"C"},{"points":55,"grade":"A"},{"points":65,"grade":"A"}]},"teacher":{"age":"35","name":"Mr Borat","Nationality":"Kazakhstan"}}}
-------- JSON Detected --------
-------- XML created Successfully --------
XML: <root><students><brown><firstname>John</firstname><sex>Male</sex></brown><jackson><firstname>Jackie</firstname><sex>Female</sex></jackson><smith><firstname>Mary</firstname><sex>Female</sex></smith></students><class><subject>Politics</subject><room>null</room><semester>Summer</semester><notes>We're happy, you happy?</notes></class><grades><test><list_element_test><points>15</points><grade>C</grade></list_element_test><list_element_test><points>55</points><grade>A</grade></list_element_test><list_element_test><points>65</points><grade>A</grade></list_element_test></test></grades><teacher><age>35</age><name>Mr Borat</name><nationality>Kazakhstan</nationality></teacher></root>

龙天

赞同来自:

您可以使用
http://json-lib.sourceforge.net/
, 它提供双向转换。

窦买办

赞同来自:

StAXON 可能会转换 JSON 在 XML, 使用 XSLT 默认模板或 StAX 事件 API
https://github.com/beckchr/sta ... o-XML
这是一个简单的例子:

输入文件:


{
"container":[
{
"someString":"xxxxx",
"someInteger":123,
"someArrayElem":[
{
"key":1111,
"value":"One"
},
{
"key":2222,
"value":"Two"
}
]
}
]
}


进口 + 代码:


import de.odysseus.staxon.json.JsonXMLConfig;
import de.odysseus.staxon.json.JsonXMLConfigBuilder;
import de.odysseus.staxon.json.JsonXMLInputFactory;
import de.odysseus.staxon.xml.util.PrettyXMLEventWriter;
import javax.xml.stream.XMLEventReader;
import javax.xml.stream.XMLEventWriter;
import javax.xml.stream.XMLOutputFactory;
import java.io.StringWriter;

StringWriter stringWriter = new StringWriter//;
JsonXMLConfig config = new JsonXMLConfigBuilder//.multiplePI/false/.prettyPrint/false/.build//;
XMLEventReader reader = new JsonXMLInputFactory/config/.createXMLEventReader/getClass//.getClassLoader//.getResourceAsStream/"input.json"//;
XMLEventWriter writer = XMLOutputFactory.newInstance//.createXMLEventWriter/stringWriter/;
writer = new PrettyXMLEventWriter/writer/;
writer.add/reader/;
String xml = stringWriter.getBuffer//.toString//;


OUTPUT:


xml version="1.0" encoding="UTF-8"?
<container>
<somestring>xxxxx</somestring>
<someinteger>123</someinteger>
<somearrayelem>
<key>1111</key>
<value>One</value>
</somearrayelem>
<somearrayelem>
<key>2222</key>
<value>Two</value>
</somearrayelem>
</container>

要回复问题请先登录注册