java解析json,然后将其xml转换json java代码为xml

博客分类:
gson: 将json对象转为java对象.
import com.google.gson.GsonB
import com.google.gson.reflect.TypeT
List&Article& article = new ArrayList&Article&();
GsonBuilder gson = new GsonBuilder();
gson.setDateFormat("yyyy-MM-dd");
String jsonString = "[{},{}]";
gson.create().fromJson(jsonString,new TypeToken&List&Article&&(){}.getType());
这样的简单实现能够保证提供的jsonString被指定为Article类型的ArrayList被gson包转换成指定的ArrayList&Article&;
XStream:
提供几个XStream的学习页面地址:
& (developerWorks 中国)
&& (Unmi同志的BLOG)
XStream 去除生成的XML节点的class="list"
使用XStream转换BEAN到XML得时候,由于bean里面有个Collection tasks属性,结果解析出来的节点里面有class="list"属性:&tasks class="list"&,很不好看,后来看到一封mail后知道,原来属性Collection tasks初始化成了ArrayList,XStream发现定义的类型和初始化类型不一样就会增加class="list",属性;只要把tasks改成ArrayList tasks就可以了,class="list"不再出现。以下是原文:
&&&&&&&&& & XStream& writes a class attribute if the member type does not match the
&&&&&&&&& & type of the object instance stored in this field. Otherwise it is not
&&&&&&&&& & necessary to deserialize the objects again. In your case the member seems
&&&&&&&&& & of type collection, but you use actually an ArrayList? You may set the
&&&&&&&&& & default implementation for Collection to be an ArrayList.
貌似XMLEncoder XMLDecoder也挺好用的。JDK里面内置的。处理的方式不一样,是通过序列化对象输出XML格式的方式而已
提供gson-1.5.jar,xstream-1.3.1.jar
(173.1 KB)
下载次数: 13
(421.3 KB)
下载次数: 19
浏览: 278989 次
来自: 深圳
在servlet标签里边加入:
可能这个标签的真谛就是为了引用资源的访问不会类似CONTROL ...
你好 我最近也在做有关Tsung的性能测试 我预期是要模拟40 ...
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'博客分类:
需要json-lib-2.1-jdk15.jar和xom-1.2.5.jar,maven pom.xml如下:
&dependency&
&groupId&net.sf.json-lib&/groupId&
&artifactId&json-lib&/artifactId&
&version&2.1&/version&
&classifier&jdk15&/classifier&
&/dependency&
&dependency&
&groupId&xom&/groupId&
&artifactId&xom&/artifactId&
&version&1.2.5&/version&
&type&jar&/type&
&scope&compile&/scope&
&/dependency&
package com.shine.framework.core.
import java.io.ByteArrayOutputS
import java.util.ArrayL
import java.util.HashM
import java.util.I
import java.util.L
import java.util.M
import net.sf.json.JSON;
import net.sf.json.JSONS
import net.sf.json.xml.XMLS
import org.dom4j.D
import org.dom4j.DocumentH
import org.dom4j.E
import org.dom4j.io.OutputF
import org.dom4j.io.XMLW
* common xml conver utility
* @version Framework
* @url http://blog.csdn.net/arjick/article/details/6251777
public class XmlConverUtil {
* map to xml xml &node&&key label="key1"&value1&/key&&key
* label="key2"&value2&/key&......&/node&
* @param map
public static String maptoXml(Map map) {
Document document = DocumentHelper.createDocument();
Element nodeElement = document.addElement("node");
for (Object obj : map.keySet()) {
Element keyElement = nodeElement.addElement("key");
keyElement.addAttribute("label", String.valueOf(obj));
keyElement.setText(String.valueOf(map.get(obj)));
return doc2String(document);
* list to xml xml &nodes&&node&&key label="key1"&value1&/key&&key
* label="key2"&value2&/key&......&/node&&node&&key
* label="key1"&value1&/key&&key
* label="key2"&value2&/key&......&/node&&/nodes&
* @param list
public static String listtoXml(List list) throws Exception {
Document document = DocumentHelper.createDocument();
Element nodesElement = document.addElement("nodes");
int i = 0;
for (Object o : list) {
Element nodeElement = nodesElement.addElement("node");
if (o instanceof Map) {
for (Object obj : ((Map) o).keySet()) {
Element keyElement = nodeElement.addElement("key");
keyElement.addAttribute("label", String.valueOf(obj));
keyElement.setText(String.valueOf(((Map) o).get(obj)));
Element keyElement = nodeElement.addElement("key");
keyElement.addAttribute("label", String.valueOf(i));
keyElement.setText(String.valueOf(o));
return doc2String(document);
* json to xml {"node":{"key":{"@label":"key1","#text":"value1"}}} conver
* &o&&node class="object"&&key class="object"
* label="key1"&value1&/key&&/node&&/o&
* @param json
public static String jsontoXml(String json) {
XMLSerializer serializer = new XMLSerializer();
JSON jsonObject = JSONSerializer.toJSON(json);
return serializer.write(jsonObject);
} catch (Exception e) {
e.printStackTrace();
* xml to map xml &node&&key label="key1"&value1&/key&&key
* label="key2"&value2&/key&......&/node&
* @param xml
public static Map xmltoMap(String xml) {
Map map = new HashMap();
Document document = DocumentHelper.parseText(xml);
Element nodeElement = document.getRootElement();
List node = nodeElement.elements();
for (Iterator it = node.iterator(); it.hasNext();) {
Element elm = (Element) it.next();
map.put(elm.attributeValue("label"), elm.getText());
nodeElement =
document =
} catch (Exception e) {
e.printStackTrace();
* xml to list xml &nodes&&node&&key label="key1"&value1&/key&&key
* label="key2"&value2&/key&......&/node&&node&&key
* label="key1"&value1&/key&&key
* label="key2"&value2&/key&......&/node&&/nodes&
* @param xml
public static List xmltoList(String xml) {
List&Map& list = new ArrayList&Map&();
Document document = DocumentHelper.parseText(xml);
Element nodesElement = document.getRootElement();
List nodes = nodesElement.elements();
for (Iterator its = nodes.iterator(); its.hasNext();) {
Element nodeElement = (Element) its.next();
Map map = xmltoMap(nodeElement.asXML());
list.add(map);
nodesElement =
document =
} catch (Exception e) {
e.printStackTrace();
* xml to json &node&&key label="key1"&value1&/key&&/node& 转化为
* {"key":{"@label":"key1","#text":"value1"}}
* @param xml
public static String xmltoJson(String xml) {
XMLSerializer xmlSerializer = new XMLSerializer();
return xmlSerializer.read(xml).toString();
* @param document
public static String doc2String(Document document) {
String s = "";
// 使用输出流来进行转化
ByteArrayOutputStream out = new ByteArrayOutputStream();
// 使用UTF-8编码
OutputFormat format = new OutputFormat("
", true, "UTF-8");
XMLWriter writer = new XMLWriter(out, format);
writer.write(document);
s = out.toString("UTF-8");
} catch (Exception ex) {
ex.printStackTrace();
-- heipark
浏览 35411
浏览: 1477700 次
来自: 北京
解释太到位了,感谢分享
非常感谢,用你的方法解决了问题。
今天遇到同样的问题了。设置的是每分钟执行一次。结果发现每分钟执 ...
想问一下,使用ExecutorService每次都要调用 sh ...
有用,谢谢
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'下次自动登录
现在的位置:
& 综合 & 正文
java将xml解析,然后将其转换为json格式(①)
java将xml里面的内容解析的方法在我前面的文章: 有什么问题可以给我留言!!!
下面就是如何将model转换为json格式的内容:
public class Student {
private String nameS
public String getNameString() {
return nameS
public void setNameString(String nameString) {
this.nameString = nameS
public int getAge() {
public void setAge(int age) {
this.age =
这里是将model转化为json格式
import java.util.ArrayL
import java.util.L
import net.sf.json.JSONA
import net.sf.json.JSONO
public class xmlJdom {
public static void main(String[] args) {
Student s1=new Student();
s1.setAge(123);
s1.setNameString("name");
Student s2=new Student();
s2.setAge(1234);
s2.setNameString("what");
new JSONObject();
JSONObject jsonObject = JSONObject.fromObject(s1);
System.out.println(jsonObject);
List&Student& list = new ArrayList&Student&();
list.add(s1);
list.add(s2);
JSONArray jsonArr= JSONArray.fromObject(list);
System.out.println(jsonArr);
下面是输出的内容!
{"age":123,"nameString":"name"}
[{"age":123,"nameString":"name"},{"age":1234,"nameString":"what"}]
如果没有给student赋值那么在json里面就会被赋值为:
如果有多个model的话要存储在list集合中,然后将list解析为json即可!
有什么问题可给我留言!
转载请注明出处谢谢!!
【上篇】【下篇】在网上搜了一圈,发现XML和JSON的互转都需要引入一些开源的jar包,可能国外的大拿提供的代码更加完善,功能更多,但是我不需要那么复杂的功能,于是自己写了一版,能进行简单的转换,支持带属性多层级的xml(json),分享给大家。
package com.transformer.plugin.
* Author: Xu Xin
* 使用原生jdk 实现的json和xml互转
import javax.xml.parsers.DocumentBuilderF
import org.w3c.dom.A
import org.w3c.dom.D
import org.w3c.dom.E
import org.w3c.dom.N
import org.w3c.dom.NodeL
public class XMLJson {
// xml 转json
public static String x2j(String xml) throws Exception{
xml = xml.replace("\n","");
Document doc = DocumentHelper.parseText(xml);
String result = parseNode(doc);
//json转xml
public static String j2x(String json) throws Exception{
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
Document doc = factory.newDocumentBuilder().newDocument();
parseJson(json,doc);
return DocumentHelper.asXML(doc);
//将XML DOM的节点解析为json字符串
private static String parseNode(Node n){
String result = "";
StringBuffer sb = new StringBuffer();
int num = 0;
if(n.hasAttributes()){
for (int i=0;i&n.getAttributes().getLength();i++){
Node attr = n.getAttributes().item(i);
if(num&0) sb.append(",");
sb.append("\"@"+attr.getNodeName()+"\":\""+attr.getNodeValue()+"\"");
if (n.hasChildNodes()){
NodeList nl = n.getChildNodes();
for(int i=0;i&nl.getLength();i++){
Node child = nl.item(i);
if(num&0) sb.append(",");
if(child.getNodeType()==Node.ELEMENT_NODE) {
sb.append("\""+child.getNodeName()+"\":");
sb.append(parseNode(child));
}else if(child.getNodeType()==Node.TEXT_NODE){
sb.append((child.getNodeValue()==null||"".equals(child))?("[]"):("\""+child.getNodeValue()+"\""));
}else if (n.getNodeType()==Node.ELEMENT_NODE){
sb.append((n.getNodeValue()==null?("[]"):("\""+n.getNodeValue()+"\"")));
result = sb.toString();
if(num&1||n.getNodeType()==Node.DOCUMENT_NODE) result="{"+result+"}";
// 将json串解析为XML DOM节点
private static void parseJson(String json,Node parent) throws Exception {
if(parent instanceof Document)
doc = (Document)
doc = parent.getOwnerDocument();
Node result =
if(json==null||"".equals(json)) throw new Exception("无json数据");
json = json.trim();
if(!json.startsWith("{")||!json.endsWith("}")) throw new Exception("json数据必须在{ }之间,而被解析的数据为:"+json);
String key = "";
boolean extractkey =
boolean extractvalue =
for(int i=1;i&json.length()-1;i++){
char cur_c = json.charAt(i);
if(extractkey){
if(cur_c!='"')
key+=cur_c;
extractkey =
System.out.println("Element Key:"+key);
}else if(extractvalue){
if(cur_c=='{'){
int left=1,right=0;
String subjson="{";
while(left&right){
cur_c = json.charAt(i);
subjson+=cur_c;
if(cur_c=='{'){
}else if(cur_c=='}'){
System.out.println("Complex Element:"+subjson);
Element ele = doc.createElement(key);
parseJson(subjson, ele);
parent.appendChild(ele);
}else if(cur_c=='"'){
String sub = "";
cur_c=json.charAt(i);
while(cur_c!='"'){
sub+=cur_c;
cur_c = json.charAt(i);
System.out.println("Text Element:"+sub);
if(key.startsWith("@")){
Element ele = (Element)
Attr a = doc.createAttribute(key.substring(1));
a.setValue(sub);
ele.setAttributeNode(a);
Node n = doc.createElement(key);
n.setTextContent(sub);
parent.appendChild(n);
}else if(cur_c=='['){
if(key.startsWith("@")){
Element ele = (Element)
ele.setAttribute(key.substring(0), "");
Node n = doc.createElement(key);
parent.appendChild(n);
while(cur_c!=']'){
System.out.println("Empty Element");
}else if(cur_c==','){
extractvalue=
if(cur_c=='"'){
extractkey=
}else if(cur_c==':'){
extractkey=
extractvalue =
public static void main(String[] args){
String xml ="&Service&&ServiceURL name=\"test\"&url&/ServiceURL&&ServiceAction&action&/ServiceAction&"
+ "&ServiceData&&col1&a&/col1&&col2&b&/col2&&col3&c&/col3&&/ServiceData&&/Service&";
String json = XMLJson.x2j(xml);
System.out.println(json);
System.out.println();
xml = XMLJson.j2x(json);
System.out.println(xml);
} catch(Exception e) {
e.printStackTrace();
在写完这篇文章的瞬间,我又发现一个问题,就是重复节点的处理,网上流行的json框架是把重复节点处理成一个数组,但是会丢掉key值,我的不会丢掉key值,但是体现不出序列,见仁见智吧,以后想好了再改。
浏览: 2995 次
来自: 北京
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'JSON与XML转换
我的图书馆
JSON与XML转换
这两天处理模块的联调工作,在json与XML转换中出现了一些奇怪的问题,仔细究来,实为对org.json.*包知之太少。晚上baidu、google一下,找出了问题出现的原因。在模块中,使用了两个方法,xml2Json()和json2Xml(),主要的问题就出在这两个方法的具体实现上。XML与JSON相互转换的Java类在org.json.*包中常用的有XML.java和JSONML.java,前一半时间花在了json格式与XML生成格式的验证上,json数据串格式没有错,只是在转换的时候需要在行尾添加“;”以表示结束。后一半时间花在格式的匹配上,查阅XML.java和JSONML.java的API,JSONML的toString(JSONObject jo)方法有如下描述:Reverse the JSONML transformation, making an XML text from a JSONObject. TheJSONObject must contain a "tagName" property. If it has children, then it must have a"childNodes" property containing an array of objects. The other properties are attributeswith string values.而XML.java的toString(Object o)方法描述如下:Convert a JSONObject into a well-formed, element-normal XML string.它与JSONML的toString()方法相比,形式更通用化,可表示如:"BATCH_TYPE":{"type":"int","content":1}.如果用JSONML类去处理,生成的json串为:{"childNodes":[1],"type":"int","tagName":"BATCH_TYPE"}。恰如JSONML的toString所描述的:转换出的json对象必须包含tagName属性,他的子节点必须用childNodes形式表示,其它的属性用字符串形式的值。附://通过xml获取对应的json串,private static String xml2Json(String xml)throws JSONException{JSONObject job = JSONML.toJSONObject(xml);String rs = job.toString();&&}//将json串转换为xml,private static String json2Xml(String jsonStr) throws JSONException{JSONObject job = new JSONObject(jsonStr+";");String jsonXML = (String)JSONML.toString(job); return jsonXML;}
TA的最新馆藏[转]&[转]&[转]&
喜欢该文的人也喜欢

我要回帖

更多关于 java将xml转换成json 的文章

 

随机推荐