后台struts2如何接收前端传来的json数组

后台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,谢谢!

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值