利用fastjson解析即信语音json

即信的语音状态报告JSON示例:
{
“type”:”VOICE”,
“total”:”2”,
“reportList”: [
{
“uuid”: “d8f4a192-113c-4e5a-9173-b18a4881eb07”,
“phone”: “135XXXXXXXXX”,
“extend”: “”,
“reportTime”: “20161115123020”,
“result”: “0”,
“durationTime”: “60”
},
{
“uuid”: “d8f4a192-113c-4e5a-9173-b18a4881eb07”,
“phone”: “135XXXXXXXXX”,
“extend”: “”,
“reportTime”: “20161115123020”,
“result”: “0”,
“durationTime”: “60”
}
]
}
这里利用fastjson解析该json:


@Controller
@RequestMapping(value = "/自定义")
public class NoticeNotifyController{
    private static Logger logger = LoggerFactory.getLogger(NoticeNotifyController.class);

    @RequestMapping(value = "自定义", method = RequestMethod.POST)
    public void receiveNotify(HttpServletRequest request, HttpServletResponse response) throws ParseException {
        try {
            StringBuffer sb = new StringBuffer() ; 
            InputStream is = request.getInputStream(); 
            InputStreamReader isr = new InputStreamReader(is);   
            BufferedReader br = new BufferedReader(isr); 
            String s = "" ; 
            while((s=br.readLine())!=null){ 
            sb.append(s) ; 
            } 
            String str =sb.toString();//json数据流 
            if(str.length()>0){
                PageData pd = new PageData();
                UUsa u1 = JSON.parseObject(str,UUsa.class); 
                Usa[] reportList = u1.getReportList();
                int total = u1.getTotal();
                if(reportList.length>0){
                    for(int i=0;i<reportList.length;i++){
                        Usa uu= new Usa();
                        uu = reportList[i];
                        String called = uu.getDest();
                        String uuid = uu.getUuid();
                        int result = uu.getResult();
                        String reportTime = uu.getReportTime();
                        int durationTime = uu.getDurationTime();
                        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
                        Date dd = simpleDateFormat.parse(reportTime);
                        long ts = dd.getTime();//转为时间戳
                    }
                }
            }
        } catch (Exception e1) {
            e1.printStackTrace();
        }
    }   
}

class Usa {

    @Override
    public String toString() {
        return "Usa [dest=" + dest + ", extend=" + extend + ", reportTime="
                + reportTime + ", result=" + result + ", durationTime="
                + durationTime + ", uuid=" + uuid + "]";
    }
    public String getUuid() {
        return uuid;
    }
    public void setUuid(String uuid) {
        this.uuid = uuid;
    }
    private String dest;//被呼叫号码 

    public String getDest() {
        return dest;
    }
    public void setDest(String dest) {
        this.dest = dest;
    }
    public String getExtend() {
        return extend;
    }
    public void setExtend(String extend) {
        this.extend = extend;
    }
    public String getReportTime() {
        return reportTime;
    }
    public void setReportTime(String reportTime) {
        this.reportTime = reportTime;
    }
    public Integer getResult() {
        return result;
    }
    public void setResult(Integer result) {
        this.result = result;
    }
    public Integer getDurationTime() {
        return durationTime;
    }
    public void setDurationTime(Integer durationTime) {
        this.durationTime = durationTime;
    }
    private String extend;//用户自定义拓展回传参数,可为null,extend 目前没有使用,可以忽略它
    private String reportTime;//状态报告时间,格式为yyyyMMddHHmmss
    private Integer result;//消息状态,请查看对应全局错误码
    private Integer durationTime;//通话持续时间,单位:秒
    private String uuid;//消息唯一ID,与下发时返回的uuid一致
} 

class UUsa {

    @Override
    public String toString() {
        return "UUsa [type=" + type + ", total=" + total + ", reportList="
                + Arrays.toString(reportList) + "]";
    }
    private String type;//‘VOICE’
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
    public Integer getTotal() {
        return total;
    }
    public void setTotal(Integer total) {
        this.total = total;
    }
    public Usa[] getReportList() {
        return reportList;
    }
    public void setReportList(Usa[] reportList) {
        this.reportList = reportList;
    }
    private Integer total;//当前数据包含有回调状态报告条数,即信并不是发送一条语音通知就回调的,状态报告回来后会回调,如果有多条会合并,节省系统资源 ,并不是一次一个的调用
    private Usa[] reportList;//数组格式,状态报告列表

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值