Java中使用JSONArray时实现嵌套

来源:互联网 发布:如何安装ps软件 编辑:程序博客网 时间:2024/05/30 02:52

  • 前言
  • 处理步骤
  • 结果

前言

最近开发的Java Web系统中涉及到为移动端写接口,需要返回JSON数据,而移动端用的是API Cloud开发的,调用它上面的电话插件时要按照他执行的格式。

首先看一下他要求的格式:

[                {                    "employee_id" : 191,                    "remark" : "王科研",                    "phonetic" : "WangKeYang", //名字的拼音                    "namephonetic" : "WangKeYang88",                    "position" : "研发",                    "dept_id" : "002000",                    "isdeleted" : "N",                    "tags" : "",                    "dept_name" : "创达集团",                    "isremark" : 1,                    "phones" : [{                            "phone" : "13366148872",                            "type" : "1"                         }]                },                 {                    "employee_id" : 193,                    "remark" : "秋风疾",                    "phonetic" : "WangKeYang88", //名字的拼音                    "namephonetic" : "WangKeYang88",                    "position" : "研发",                    "dept_id" : "002000",                    "isdeleted" : "N",                    "tags" : "",                    "dept_name" : "创达集团",                    "isremark" : 1,                    "phones" : [{                        "phone" : "13366148872",                        "type" : "1"                    }]                }]

发现phones部分有嵌套的json,而我们之前查出来的数据格式为:
这里写图片描述

所以需要严格按照格式进行修改.

处理步骤

首先说一下用到的一个实体类

public class AppStaff {    private String STAFF_ID;        //ID    private String NAME;            //姓名    private String BIANMA;          //编码-工号    private String TEL;             //电话    private String DEPARTMENT;      //所属部门    /* getter/setter方法省略不写....*/}

然后就要根据现在有的几个字段,查询出来改造格式变成需要的json。

处理方法为:

    @RequestMapping(value="/listForStaff" ,produces="application/json;charset=UTF-8")    @ResponseBody    public Object listForStaff() throws Exception{        JSONArray arr=new JSONArray();//所有员工json信息总的数组        List<PageData> pds=staffService.returnStaffToApp(new Page());  //到数据库中查询所有的员工信息        Iterator iterator=pds.iterator();        while (iterator.hasNext()){  //迭代器遍历List            AppStaff p= (AppStaff) iterator.next();  //强制类型转化            JSONObject jsonObject1=new JSONObject();                jsonObject1.put("employee_id",p.getSTAFF_ID());                jsonObject1.put("remark",p.getNAME());                jsonObject1.put("phonetic",p.getNAME());                jsonObject1.put("namephonetic",p.getNAME());                jsonObject1.put("position",p.getDEPARTMENT());                jsonObject1.put("dept_id",p.getDEPARTMENT());                jsonObject1.put("isdeleted","N");                jsonObject1.put("tags","");                jsonObject1.put("dept_name",p.getDEPARTMENT());                jsonObject1.put("isremark",1);                JSONArray arr11=new JSONArray();//每个人的电话信息数组                    JSONObject jsonObject11=new JSONObject();                    jsonObject11.put("phone",p.getTEL());                    jsonObject11.put("type","1");                arr11.add(jsonObject11);  //电话信息数组            jsonObject1.put("phones",arr11);//压入电话信息数组            arr.add(jsonObject1);//整个员工信息加到数组        }        return arr;    }}

结果

这里写图片描述

1 0