如何把string转为json并逐级取数据

package com.bysoft.bcp.ams.interfaces.service;

import java.util.Arrays;
import java.util.Date;
import java.util.Iterator;
import java.util.List;

import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.bysoft.bcp.ams.interfaces.dao.SyncDao;
import com.bysoft.bcp.ams.util.CXFAuthenticationInterceptor;
import com.bysoft.bcp.ams.webservice.ganghong.org.Exception_Exception;
import com.bysoft.bcp.ams.webservice.ganghong.org.ISysSynchroGetOrgWebService;
import com.bysoft.bcp.ams.webservice.ganghong.org.ISysSynchroGetOrgWebServiceService;
import com.bysoft.bcp.ams.webservice.ganghong.org.SysSynchroGetOrgBaseInfoContext;
import com.bysoft.bcp.ams.webservice.ganghong.org.SysSynchroOrgResult;
import com.bysoft.bcp.core.entity.BaseEntity;
import com.bysoft.bcp.core.util.PasswordUtils;
import com.bysoft.bcp.core.util.StringUtils;
import com.bysoft.bcp.core.util.UUIDUtils;
import com.bysoft.bcp.system.dao.OrganDao;
import com.bysoft.bcp.system.dao.UserDao;
import com.bysoft.bcp.system.entity.Organ;
import com.bysoft.bcp.system.entity.User;

/**

  • 人员组织同步业务层

  • @author wangwentao

  • @date 2020-04-28

  • /
    @Service
    public class SyncService {

    @Autowired
    private SyncDao syncDao;

    @Autowired
    private OrganDao organDao;

    @Autowired
    private UserDao userDao;

    private static final Logger logger = LoggerFactory.getLogger(SyncService.class);

    private static final String PASSWORD = "KM12345678";

    private static final String USER_AVATAR = "/img/avatar.jpg";

    private static ISysSynchroGetOrgWebService port;

    /**

    • 同步人员和组织架构
    • /
      public void sync() {
      getOrgan();
      optimizeLevel();
      getUser();
      }

    public static void main(String[] args) {

      port = createWebService();
      getOrgan();
      getdept();
      getgroup();
      getpost();
      getperson();
    

    }

    /**

    • 创建WebService客户端
    • @return
    • /
      public static ISysSynchroGetOrgWebService createWebService() {
      JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
      factory.getOutInterceptors().add(new CXFAuthenticationInterceptor("archives", "archives@2021"));
      factory.setAddress(ISysSynchroGetOrgWebServiceService.WSDL_LOCATION.toString());
      return factory.create(ISysSynchroGetOrgWebService.class);
      }

    /**

    • 同步部门
    • /
      private static void getOrgan() {
      SysSynchroGetOrgBaseInfoContext sysSynchroGetOrgBaseInfoContext = new SysSynchroGetOrgBaseInfoContext();
      sysSynchroGetOrgBaseInfoContext.setReturnOrgType("[{"type":"org"}]");
      try {
        SysSynchroOrgResult elementsBaseInfo = port.getElementsBaseInfo(sysSynchroGetOrgBaseInfoContext);
        String message = elementsBaseInfo.getMessage();
        System.out.println(message);
        int count = elementsBaseInfo.getCount();
        System.out.println(count);
      
      } catch (Exception_Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      
      }
      }

    private static void getdept() {

      SysSynchroGetOrgBaseInfoContext sysSynchroGetOrgBaseInfoContext = new SysSynchroGetOrgBaseInfoContext();
      sysSynchroGetOrgBaseInfoContext.setReturnOrgType("[{\"type\":\"dept\"}]");
      try {
          SysSynchroOrgResult elementsBaseInfo = port.getElementsBaseInfo(sysSynchroGetOrgBaseInfoContext);
          String message = elementsBaseInfo.getMessage();
          System.out.println(message);
          int count = elementsBaseInfo.getCount();
          System.out.println(count);
      } catch (Exception_Exception e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
      }
    

    }

    private static void getgroup() {

      SysSynchroGetOrgBaseInfoContext sysSynchroGetOrgBaseInfoContext = new SysSynchroGetOrgBaseInfoContext();
      sysSynchroGetOrgBaseInfoContext.setReturnOrgType("[{\"type\":\"group\"}]");
      try {
          SysSynchroOrgResult elementsBaseInfo = port.getElementsBaseInfo(sysSynchroGetOrgBaseInfoContext);
          String message = elementsBaseInfo.getMessage();
          System.out.println(message);
          int count = elementsBaseInfo.getCount();
          System.out.println(count);
      } catch (Exception_Exception e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
      }
    

    }
    private static void getpost() {

      SysSynchroGetOrgBaseInfoContext sysSynchroGetOrgBaseInfoContext = new SysSynchroGetOrgBaseInfoContext();
      sysSynchroGetOrgBaseInfoContext.setReturnOrgType("[{\"type\":\"post\"}]");
      try {
          SysSynchroOrgResult elementsBaseInfo = port.getElementsBaseInfo(sysSynchroGetOrgBaseInfoContext);
          String message = elementsBaseInfo.getMessage();
          System.out.println(message);
          int count = elementsBaseInfo.getCount();
          System.out.println(count);
      } catch (Exception_Exception e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
      }
    

    }

    private static void getperson() {

      SysSynchroGetOrgBaseInfoContext sysSynchroGetOrgBaseInfoContext = new SysSynchroGetOrgBaseInfoContext();
      sysSynchroGetOrgBaseInfoContext.setReturnOrgType("[{\"type\":\"person\"}]");
      try {
          SysSynchroOrgResult elementsBaseInfo = port.getElementsBaseInfo(sysSynchroGetOrgBaseInfoContext);
          String message = elementsBaseInfo.getMessage();
          System.out.println(message);
          int count = elementsBaseInfo.getCount();
          System.out.println(count);
      } catch (Exception_Exception e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
      }
    

    }

    public static void main1(String[] args) {

      SysSynchroGetOrgBaseInfoContext sysSynchroGetOrgBaseInfoContext = new SysSynchroGetOrgBaseInfoContext();
      sysSynchroGetOrgBaseInfoContext.setReturnOrgType("[{\"type\":\"person\"}]");
      try {
          SysSynchroOrgResult elementsBaseInfo = port.getElementsBaseInfo(sysSynchroGetOrgBaseInfoContext);
          String message = elementsBaseInfo.getMessage();
          System.out.println(message);
          int count = elementsBaseInfo.getCount();
          System.out.println(count);
      } catch (Exception_Exception e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
      }
    

    }

//blog.csdn.net/lpcuili/article/details/97828750
// for (Iterator iterator = organlist.iterator(); iterator.hasNext(); ) {
// try {
// BaseEntity entity = iterator.next();
// Organ organ = new Organ();
// String id = entity.get("id").toString();
// organ.setOrganId(id);
// organ.setOrganName(entity.get("departmentname").toString());
// int sup = 0;
// if (StringUtils.isNotNull(entity.get("supdepid"))) {
// Number number = (Number) entity.get("supdepid");
// sup = number.intValue();
// }
// String type = "";
// if (sup == 0) {
// type = "sub";
// }
// if (sup == 0 && StringUtils.isNotNull(entity.get("subcompanyid1"))) {
// Number number = (Number) entity.get("subcompanyid1");
// sup = number.intValue();
// }
// if ("sub1050".equals(type + sup)) {
// continue;
// }
// organ.setOrganParentId(type + sup);
// organ.setOrganState(1);
// int sn = 0;
// if (StringUtils.isNotNull(entity.get("showorder"))) {
// Number number = (Number) entity.get("showorder");
// sn = number.intValue();
// }
// organ.setOrganSn(sn);
// organ.setOrganLeaf(false);
// Organ dbOrgan = organDao.createLambdaQuery().andEq(Organ::getOrganId, id).single();
// if (dbOrgan != null) {
// organ.setUpdateTime(new Date());
// organDao.updateById(organ);
// } else {
// organ.setCreateTime(new Date());
// organDao.insert(organ);
// }
// } catch (Exception e) {
// logger.error("同步部门出错", e);
// continue;
// }
// }

/**
 * 优化组织架构
 */
private void optimizeLevel() {
    List<Organ> organAll = organDao.all();
    if (null != organAll) {
        for (Organ organ : organAll) {
            if ((int) organDao.createLambdaQuery().andEq(Organ::getOrganParentId, organ.getOrganId()).count() == 0) {
                organDao.executeUpdate("update sys_organ set organ_leaf = ? where organ_id = ?", true, organ.getOrganId());
            }
        }
    }
}

/**
 * 同步用户
 */
private void getUser() {
    List<BaseEntity> userList = null;
    for (Iterator<BaseEntity> iterator = userList.iterator(); iterator.hasNext(); ) {
        try {
            BaseEntity entity = iterator.next();
            User user = new User();
            String id = entity.get("id").toString();
            //用户ID
            user.setUserId(id);
            //用户登陆名
            user.setUserLoginName(entity.get("loginid").toString());
            //用户名
            user.setUserName(entity.get("lastname").toString());
            //性别
            user.setUserSex(((String) entity.get("sex")).equals("0") ? "男" : "女");
            //头像
            user.setUserAvatar(USER_AVATAR);
            String organId = entity.get("departmentid").toString();
            //用户部门ID
            user.setUserOrganId(organId);
            Organ dbOrgan = organDao.createLambdaQuery().andEq(Organ::getOrganId, organId).single();
            if (dbOrgan != null) {
                //用户部门名称
                user.setUserOrganName(dbOrgan.getOrganName());
            } else {
                continue;
            }
            String organFullName = getOrganFullNameById(organId);
            //用户部门全称
            user.setUserOrganFullname(organFullName);
            //用户工作电话
            user.setUserWorkPhone((String) entity.get("telephone"));
            //用户移动电话
            user.setUserMobilePhone((String) entity.get("mobile"));
            //用户邮箱
            user.setUserEmail((String) entity.get("email"));
            //用户状态
            int state = 0;
            if (StringUtils.isNotNull(entity.get("status"))) {
                Number number = (Number) entity.get("status");
                state = number.intValue();
            }
            if (state == 0 || state == 1 || state == 2 || state == 3) {
                state = 1;
            } else {
                state = 0;
            }
            user.setUserState(state);
            User dbUser = userDao.createLambdaQuery().andEq(User::getUserId, id).single();
            if (dbUser != null) {
                user.setUpdateTime(new Date());
                userDao.updateTemplateById(user);
            } else {
                User loginidUser = userDao.createLambdaQuery().andEq(User::getUserLoginName, entity.get("loginid").toString()).single();
                if (loginidUser != null) {
                    userDao.deleteById(loginidUser.getUserId());
                    userDao.executeUpdate("delete from sys_user_group where user_id = ?", loginidUser.getUserId());
                }
                //用户密码
                user.setUserPassword(PasswordUtils.sha256(PASSWORD));
                user.setCreateTime(new Date());
                userDao.insert(user);
                userDao.executeUpdate("INSERT INTO sys_user_group(guid,group_id,user_id) VALUES (?,?,?)", UUIDUtils.uuid(), "dd355313-136c-4fc4-9cd9-c45761d9f75e", id);
            }
        } catch (Exception e) {
            logger.error("同步用户出错", e);
            continue;
        }
    }
}

/**
 * 根据部门ID获取部门全称
 *
 * @param organId 部门ID
 * @return 部门全称
 */
private String getOrganFullNameById(String organId) {
    StringBuilder organFullName = new StringBuilder();
    List<BaseEntity> organIdList = syncDao.execute("select func_query_parent_organ(?) as id", organId);
    if (!organIdList.isEmpty()) {
        StringBuilder organName = new StringBuilder();
        String id = organIdList.get(0).get("id").toString();
        if (!StringUtils.isBlank(id)) {
            String[] guid = id.split(",");
            List<Organ> organNameList = organDao.createLambdaQuery().andIn(Organ::getOrganId, Arrays.asList(guid))
                    .appendSql(" order by FIND_IN_SET(organ_id,func_query_parent_organ('" + organId + "'))").select();
            if (!organNameList.isEmpty()) {
                for (Organ organ : organNameList) {
                    organName.append("-" + organ.getOrganName());
                }
                if (StringUtils.isBlank(organFullName.toString())) {
                    organFullName.append(organName.substring(1));
                } else {
                    organFullName.append("-" + organName);
                }
            }
        }
    }
    return organFullName.toString();
}

}

用 fastjson 或者 jackson包

可以用fastjson或者Gson都可以这个挺简单的,想要学java可以看看我的博客哦

使用Gson:
JSONObject jsonObject = JSONObject.parseObject(str);