废话不多说:
至于有没有其他的方式 我不知道 这个是我的解决方案 如果有的话 请留言
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包
望大家拍板
分享到:
相关推荐
XML 元素中,"和 "&" 是非法的。"会产生错误,因为解析器会把该字符解释为新元素的开始。"&" 也会产生错误,因为解析器会把该字符解释为字符实体的开始。CDATA:在标记CDATA下,所有的标记、实体引用都被忽略,而被XML...
这是一个很不错的json转换xml格式的资料
xml文件自动转成java对象工具,生成xsd文件,xsd转java
JAXB工具类 xml转为java对象 java对象转为xml ,本人亲测,可以使用!!!
里面是xml转换成为java对象的两种方法,
在java.beans包中,有两个好东西,XMLEncoder和XMLDecoder。从XML存取对象真是太费力气啦。做了小工具类,以后可以用用了。本文介绍了这两个可以把JAVA对象序列化保存为XML文件的工具类。
xml报文和java对象互相转换 相关jar包和测试代码,可以与castor插件java对象和XML自动绑定maping文件生成和java对象一键生成工具1.2(https://download.csdn.net/download/kemoing/10864595)完美配合使用
本示例实现将xml数据转换为Java对象, 在这里使用org.xml.sax.helpers.DefaultHandler的子类处理XML 运行前要将raw目录下的xml 文件通过DDMS透视图中导入到摸拟器的SD卡中
simple-xml2object是一个简单实用的xml和JAVA对象转换的类库,jar包很小,而且不需要任何依赖包。 下载后,压缩包包含一个jar包,导入即可。包含一个测试类,有详细的注释展示用法。还包含一个中文文档。
使用 XStream 不用任何映射就能实现多数 Java 对象的序列化。在生成的 XML 中对象名变成了元素名,类中的字符串组成了 XML 中的元素内容。使用 XStream 序列化的类不需要实现 Serializable 接口。XStream 是一种序列...
将一个java对象转换为xml文件,或者将一个xml文件转换为一个java对象。 (有人说需要jaxws-api-2.0.jar这个包,但是我做这个例子时没有用的,不过我还是把它附上,备用)
本代码主要是Java对象和Xml之间的转换实例代码,如果想具体指导代码是如何搭建的,可以参照http://blog.csdn.net/songdeitao/article/details/17304395这篇博文,这里的代码是和此对应的。
该例子是将xml文件映射为java对象的例子。 commons-betwixt-0.8.jar
NULL 博文链接:https://zw7534313.iteye.com/blog/2422138
将对象(java bean)转换为xml字符串
NULL 博文链接:https://xiongpan0807.iteye.com/blog/1832124
这个是 对于要把数据库获得的 list 转换成 xml 有了XStream在Java对象和XML之间相互转换 就变得非常容易了 嘿嘿
xStream可以轻易的将Java对象和xml文档相互转换,本实例详细介绍了运用xStream将对象转xml和xml转对象操作.zip,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
本示例程序提供从XML到java对象的转换方法,同时也提供一种从java对象到XML的转换方法