JSON字符串转换object错误:MorphDynaBean cannot be cast to com.softright.bean.TestBean,类中有集合类型的属性 因为JSONObject.toBean()把JSON字符串转换为一个自己定义的类,当其中属性有类似List , Map ,ArrayList的时候,麻烦就来了
错误:MorphDynaBean cannot be cast to com.softright.bean.TestBean
解决方法:
在JSONObject.toBean的时候
如果转换的类中有集合,可以先定义Map<String, Class> classMap = new HashMap<String, Class>();
在classMap中put你要转换的类中的集合名,像:classMap.put("data", StoDataInfo.class);
当然也可以put一个集合类("data",Map.class)
然后在toBean()的时候把参数加上, 像:ShenTongInfo stInfo=(ShenTongInfo) JSONObject.toBean(o, ShenTongInfo.class, classMap);
具体实例
代码如下 复制代码
public class JsonConvertorDemo {
public static void main(String[] args) {
B b1 = new B("b1");
Map<String, B> bMap = new HashMap<String, B>();
bMap.put("key1", b1);
A a1 = new A(bMap);
JSONObject jsonObject = JSONObject.fromObject(a1);
String json = jsonObject.toString();
jsonObject = JSONObject.fromObject(json);
Map<String, Class> classMap = new HashMap<String, Class>();
classMap.put("bMap", Map.class);
a1 = (A) JSONObject.toBean(jsonObject, A.class, classMap);
bMap = a1.getbMap();
System.out.println(bMap.get("key1").getB1());
}
}
public class A {
private Map<String, B> bMap = new HashMap<String, B>();
public A() {}
public A(Map<String, B> bMap) {
this.bMap = bMap;
}
public Map<String, B> getbMap() {
return bMap;
}
public void setbMap(Map<String, B> bMap) {
this.bMap = bMap;
}
}
public class B {
private String b1;
public B() {}
public B(String b1) {
this.b1 = b1;
}
public String getB1() {
return b1;
}
public void setB1(String b1) {
this.b1 = b1;
}
}
本文章介绍了利用java的一个图形控制来实现jfreechart水晶图饼的实现代码与效果,有需要的同学可以参考一下。
一个水晶效果的拼图如下
实现代码如下
代码如下 复制代码
<%@ page contentType="text/html;charset=GBK"%>
<%@ page
import="org.jfree.chart.*,org.jfree.chart.servlet.ServletUtilities,
org.jfree.util.Rotation,org.jfree.data.general.DefaultPieDataset,
org.jfree.chart.plot.PiePlot3D,org.jfree.chart.title.TextTitle,
java.awt.Font,org.jfree.chart.plot.PiePlot"%>
<%
//设置数据集
DefaultPieDataset dataset = new DefaultPieDataset();
dataset.setValue("初中高级程序员", 0.52);
dataset.setValue("项目经理", 0.1);
dataset.setValue("系统分析师", 0.1);
dataset.setValue("软件架构师", 0.1);
dataset.setValue("其他", 0.18);
//通过工厂类生成JFreeChart对象
JFreeChart chart = ChartFactory.createPieChart3D("IT行业职业分布图",
dataset, true, true, false);
//获得3D的水晶图对象
PiePlot3D pieplot3d = (PiePlot3D) chart.getPlot();
//设置开始角度
pieplot3d.setStartAngle(150D);
//设置方向为“顺时针方向”
pieplot3d.setDirection(Rotation.CLOCKWISE);
//设置透明度,0.5F为半透明,1为不透明,0为全透明
pieplot3d.setForegroundAlpha(0.5F);
//没有数据的时候显示的内容
pieplot3d.setNoDataMessage("无数据显示");
//标题文字乱码 IT行业职业分布图
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("宋体", Font.PLAIN, 20));
//饼上的文字乱码
PiePlot plot = (PiePlot) chart.getPlot();
plot.setLabelFont(new Font("宋体", Font.PLAIN, 12));
//图例文字乱码 饼图下面的5个说明
chart.getLegend().setItemFont(new Font("宋体", Font.PLAIN, 12));
String filename = ServletUtilities.saveChartAsPNG(chart, 500, 300,
null, session);
String graphURL = request.getContextPath()
+ "/DisplayChart?filename=" + filename;
%>
<html>
<head>
<title>饼状图3(水晶饼图)</title>
</head>
<body>
<img src="<%=graphURL%>" width=500 height=300 border=0
usemap="#<%= filename %>">
</body>
</html>
提供一篇关于java中使用Struts 2框架上传文件代码哦,动态文件上传,有需要的朋友可以参考一下。
HTML表单默认值:
代码如下
复制代码
...
代码如下
复制代码
...
代码如下
复制代码
Choose a file to Upload:
使用Struts 2框架上传文件的准备工作
第一步、在JSP页面中使用Struts 2标签库中的file标签,给它取一个容易理解的名字,若要上传多个文件就必须使用多个file标签,但它们的名字必须相同:
代码如下
复制代码
第二步、创建接收上传文件信息的动作类。该动作类被约定为必须带有3个属性,并且这三个属性的命名必须符合是下面的规定
这里的[inputName]是表单上file标签的名字,例如,file标签的name="attachment",你的这三个属性的名字必须命名为attachmentFile、attachmentFileName和attachmentContentType。