之前在做webservice时候对提交内容进行json编码,
但是其中在new XStream的时候就会死掉,其中在java平台下调试都正常通过,
其中也确定了,xstream和json的jar文件都已经放置正确。怎么调试都无法通过。后来同事过来修改了驱动器就解决了问题,
在这里分享下,其中开始安卓不支持的驱动器 new JettisonMappedXmlDriver();
修改成new JsonHierarchicalStreamDriver();
虽然每个驱动器生成的格式不同这两个格式很相似,如果不想要换行符就用replaceall来替换
通过。在这里放置下代码:
package com.synjones.sdt;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.json.JettisonMappedXmlDriver;
import com.thoughtworks.xstream.io.json.JsonHierarchicalStreamDriver;
public class ZKCXStream {
private XStream xstream = null;
private ObjectOutputStream out = null;
private ObjectInputStream in = null;
private formjson bean = null;
public ZKCXStream()
{
}
public ZKCXStream(formjson bean)
{
this.bean=bean;
}
public void destory() {
xstream = null;
bean = null;
try {
if (out != null) {
out.flush();
out.close();
}
if (in != null) {
in.close();
}
} catch (IOException e) {
e.printStackTrace();
}
System.gc();
}
public final void fail(String string) {
System.out.println(string);
}
public final static void failRed(String string) {
System.err.println(string);
}
public String writeEntity2JETTSON() {
String result="";
JsonHierarchicalStreamDriver driver = new JsonHierarchicalStreamDriver();
xstream = new XStream(driver);
//new JettisonMappedXmlDriver()
xstream.setMode(XStream.NO_REFERENCES);
xstream.alias("", formjson.class);
result = xstream.toXML(bean);
System.out.print(result);
return result;
}
}