后台struts2如何接收前端传来的json数组
struts2通过json接收普通参数,只需在相应的Action类中定义变量,并用getter和setter即可获取。然而,要怎么获取接收数组类的json数据呢?
譬如下面的json:
{
"sumCost":33,
"address":"地址",
"username":"用户名",
"goods":
[
{
"goodName":"doujiang",
"goodCost":1.4,
"goodNum":2
},
{
"goodName":"jiangdou",
"goodCost":1.2,
"goodNum":1
}
]
}
我搜索了很多次,但是基本都是用JsonObject接收后解析,没有找到简便的解决方案。今天忽然想起如果用ArrayList或者Set定义一个变量来接收json数组,是否可以解决问题。于是我就试一试,最后成功了!!
下面是我写的代码。
1.Action类
LoginAction.java
package com.shopping.action;
import java.util.Set;
import java.util.Date;
import com.opensymphony.xwork2.ActionSupport;
import com.shopping.hibernate.GoodsInOrders;
public class OrderActionTest extends ActionSupport{
/**
* 下单测试action
*/
private static final long serialVersionUID = 1L;
private Double sumCost;
private Date time;
private String address;
private String username;
//存储json数组的Set
private Set<GoodsInOrders> goods;
public Double getSumCost() {
return sumCost;
}
public void setSumCost(Double sumCost) {
this.sumCost = sumCost;
}
public Date getTime() {
return time;
}
public void setTime(Date time) {
this.time = time;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Set<GoodsInOrders> getGoods() {
return goods;
}
public void setGoods(Set<GoodsInOrders> goods) {
this.goods = goods;
}
@Override
public String execute() {
time = new Date();
System.out.println("sumCost:"+sumCost+"\ntime:"+time);
System.out.println("goods:"+goods);
return SUCCESS;
}
}
2.GoodsInOrders 类
用于存储这部分数据
{
"goodName":"商品1",
"goodCost":1.4,
"goodNum":2
}
package com.shopping.hibernate;
public class GoodsInOrders {
private int id;
private String goodName;
private Double goodCost;
private int goodNum;
private Order order;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getGoodName() {
return goodName;
}
public void setGoodName(String goodName) {
this.goodName = goodName;
}
public Double getGoodCost() {
return goodCost;
}
public void setGoodCost(Double goodCost) {
this.goodCost = goodCost;
}
public int getGoodNum() {
return goodNum;
}
public void setGoodNum(int goodNum) {
this.goodNum = goodNum;
}
public Order getOrder() {
return order;
}
public void setOrder(Order order) {
this.order = order;
}
}
3.结果
struts.xml文件正常配置,设置断点后debug,结果截图如下。
使用ArrayList同样可以。
4.结束语
这是我第一次写博客,希望大家多多支持!欢迎跟我交流技术问题!如需转载,请注明出处:http://blog.csdn.net/qq_17169663/article/details/50173455,谢谢!