废话不多说:
至于有没有其他的方式 我不知道 这个是我的解决方案 如果有的话 请留言
1.需要导入json-plugin google的那个
2.需要json的一个包 这个包具体是什么版本 我也不知道 我会这个包的所有源码上传 不多 就十来个类
import java.io.IOException;
import java.io.PrintWriter;
import org.apache.struts2.ServletActionContext;
import org.json.JSONException;
import org.json.JSONObject;
import org.json.XML;
import com.googlecode.jsonplugin.JSONExeption;
import com.googlecode.jsonplugin.JSONUtil;
/**
* @author heng
* @version 1.0
* class discription:
*/
public class BaseAction {
String returnType="json";
public String getReturnType() {
return returnType;
}
public void setReturnType(String returnType) {
this.returnType = returnType;
}
/**
* 此为Ajax返回值序列化方法 此方法默认返回json格式数据
* 若客户端可通过设置returnType=xml 或者returnType=json来获取返回值 返回值均为utf-8编码
*
*/
public void outPrintJson(Object object) throws JSONException,IOException{
String returnStr = "";
try {
if("json".equals(returnType)){
returnStr=new JSONObject(JSONUtil.serialize(object)).toString(4);
System.out.println(returnStr);
}if("xml".equals(returnType)){
returnStr="<?xml version=\"1.0\" encoding=\"UTF-8\"?><result>"+XML.toString(new JSONObject(JSONUtil.serialize(object)))+"</result>";
//returnStr=(XML.toJSONObject(returnStr)).toString(4);
System.out.println(returnStr);
}
ServletActionContext.getResponse().setCharacterEncoding("UTF-8");
ServletActionContext.getResponse().setHeader("Cache-Control","no-cache");
PrintWriter out = ServletActionContext.getResponse().getWriter();
out.print(returnStr);
out.flush();
out.close();
} catch (IOException e) {
e.printStackTrace();
throw e;
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
throw e;
} catch (JSONExeption e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
这个是我的baseaction 客户端调用action的时候只需要将设定returnType 的类型 那么outPrintJson 就会将action序列话为xml串或者序列化为json串
下面大体讲解一下代码:
1.返回json
returnStr=new JSONObject(JSONUtil.serialize(object)).toString(4);
JSONUtil.serialize(object) 是json-plugin的序列话json方法 可以无限调用javaobject里面属性的get方法 将object彻底序列成json 不过碰到序列化http路径之类的值的时候会有问题 所以如果返回值里面有url路径之类 那么就在用JSONObject 再次序列 这样就没问题了 原样输出
2.返回xml
returnStr="<?xml version=\"1.0\" encoding=\"UTF-8\"?><result>"+XML.toString(new JSONObject(JSONUtil.serialize(object)))+"</result>";
由于我下载到的这个包不能彻底序列对象内部的对象属性 所以还是用google提供的json包将对象彻底序列成json对象 然后用次字符串再构造JSONObject对象 最后再用xml的toString方法序列 其xml也可原样输出url路径
google提供的是jar包 我下载到的是rar包
望大家拍板
分享到:
相关推荐
要将Java对象转换成XML并包含CDATA,我们可以利用如XStream这样的库。XStream是一个简单且功能强大的库,用于将Java对象转换为XML,反之亦然。在上述例子中,我们看到了一个自定义的实现过程,包括三个主要类:...
JAXB是Java SE的一部分,它提供了将Java对象直接转换为XML文档,以及从XML文档反序列化回Java对象的能力。首先,你需要为要转换的对象创建对应的Java类,并使用`@XmlRootElement`、`@XmlElement`等注解来指定XML...
3. **生成XML**:有了映射文件后,使用`Marshaller`类可以将Java对象转换成XML字符串或写入文件。例如: ```java Marshaller marshaller = new Marshaller(new FileWriter("output.xml")); marshaller.marshal...
通过`Marshaller`,你可以将Java对象转换成XML字符串、写入到文件或流中。例如,如果你有一个名为`myObject`的Java对象,并希望将其转换为XML字符串,可以这样做: ```java Marshaller marshaller = jaxbContext....
2. **Marshaller**: 将Java对象转换为XML文档。 3. **Binder**: 用于在Java类和XML Schema之间建立映射关系。 ### XML到Java对象的转换 要将XML转换为Java对象,首先需要一个对应的Java类,该类的字段与XML元素...
2. 序列化XML:使用`Marshaller`接口将Java对象转换为XML文档。例如: ```java JAXBContext jaxbContext = JAXBContext.newInstance(User.class); Marshaller marshaller = jaxbContext.createMarshaller(); ...
接着,你可以将Java对象转换为XML字符串: ```java Person person = new Person(); person.setName("John"); person.setAge(30); String xml = xstream.toXML(person); System.out.println(xml); ``` 反之,如果...
首先,Java与XML的转化通常涉及两个主要步骤:解析XML文件生成Java对象和将Java对象转换成XML。这两个过程分别对应于XML解析器和对象到XML的序列化库。 1. XML解析器生成Java对象: 当我们需要从XML文件中提取数据...
XML文件自动转换为Java对象工具是一种实用的开发辅助软件,它可以帮助程序员快速地将XML数据映射到Java类,从而简化了数据处理的过程。在Java开发中,XML常被用作数据交换格式,但手动编写Java类来表示XML结构既耗时...
`XMLEncoder`是一个用于将Java对象编码为XML输出流的类,它能够将对象的属性和结构转换为XML格式。而`XMLDecoder`则相反,它可以解析XML输入流并重建原始的Java对象。这两个工具使得在XML和Java对象之间进行序列化和...
在本文中,我们将深入探讨如何使用JAXB实现Java对象与XML的互相转换。 首先,我们需要理解JAXB的基本工作原理。JAXB基于Java注解,这些注解用于标记Java类和它们的属性,以便JAXB知道哪些元素和属性应该映射到XML中...
5. **Marshalling**:使用Marshaller对象的`marshal()`方法,将Java对象转换成XML字符串或写入XML文件。 ### 示例代码 ```java import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind....
在这个场景下,我们关注的是如何将Java对象转换成XML或JSON格式,这两种格式广泛用于数据交换和网络通信。XML(eXtensible Markup Language)是一种标记语言,提供了一种结构化的数据表示方法,而JSON(JavaScript ...
simple-xml2object是一个简单实用的xml和JAVA对象转换的类库,jar包很小,而且不需要任何依赖包。 下载后,压缩包包含一个jar包,导入即可。包含一个测试类,有详细的注释展示用法。还包含一个中文文档。
XStream的核心功能在于它可以自动将Java对象转换成XML表示,反之亦然。这个过程是通过反射和元数据驱动的,使得开发人员无需编写大量繁琐的代码。XStream库提供了一个简洁的API,使得序列化和反序列化变得极其简单。...
"java转换xml、list、map和json" 本文主要讲述了Java中将xml、list、map和json之间的转换的相关知识点。 xml和map之间的转换 在Java中,xml和map之间的转换可以通过使用dom4j库来实现。dom4j是一个Java开源库,...
这会将XML数据解析成Java对象。 3. **Java对象到XML**: 如果需要将Java对象序列化为XML,可以使用`XmlMapper`的`write()`方法,将Java对象写入到OutputStream或Writer。 在压缩包中的`Betwixt_xml_to_JavaObject`...
6. **反向操作**:如果需要将Java对象转换回XML,可以创建`Marshaller`,然后调用`Marshaller.marshal()`方法将Java对象写入XML文件。 在描述中提到的DTO(数据传输对象)是软件设计模式中的一种,用于在系统组件...
// 将Java对象转换为XML marshaller.marshal(person, System.out); } } ``` 在这个例子中,`Person`类需要有对应的注解,如`@XmlRootElement`和`@XmlElement`,以指示JAXB如何映射XML元素。 另一方面,从XML到...