JsonObject对象和jsonArrsy数组的获取JDK1.8,添加到表中

2023-11-19

1.基础数据结构

一个合同号对应多个批号,一个批号对应多个车辆。

{
    "arrivalReport":{
        "contractContent":{
            "contractNumber":"2021-11-17合同号",
            "orderNumber":"2021-11-17-0032订单号",
            "buyer":"aaaa",
            "seller":"aa金矿",
            "productName":"aa矿",
            "productCode":"2021-11-17"
        },
        "arrivalNo":"2021-11-17"
    },
    "CarTransport":[
        {
            "batchNumber":"2021-11-17-0032批号",
            "carAmount":"2车数",
            "cuGrade":"0.32",
            "auGrade":"0.10",
            "agGrade":"0.20"
        },
        {
            "batchNumber":"2021-11-17-0033批号",
            "carAmount":"3车数",
            "cuGrade":"0.32",
            "auGrade":"0.20",
            "agGrade":"0.1"
        }
    ],
     "driverDetails":[
        {
            "batchNumber":"2021-11-17-0032批号",
            "transportWeight":"52.3重量",
            "carNumber":"车牌号01-1",
            "carModel":"车型01-1",
            "driverName":"张三",
            "contactNumber":"17746302456",
            "idCard":"41142515554525"
        },
        {
            "batchNumber":"2021-11-17-0032批号",
            "transportWeight":"54.03",
            "carNumber":"车牌号01-2",
            "carModel":"车型01-1",
            "driverName":"李四",
            "contactNumber":"17746302546",
            "idCard":"41142515558877"
        },
        {
            "batchNumber":"2021-11-17-0033批号",
            "transportWeight":"48.03",
            "carNumber":"车牌号02-1",
            "carModel":"车型02-1",
            "driverName":"张三",
            "contactNumber":"17746302456",
            "idCard":"41142515554525"
        },
        {
            "batchNumber":"2021-11-17-0033批号",
            "transportWeight":"52.03",
            "carNumber":"车牌号02-2",
            "carModel":"车型02-2",
            "driverName":"李四",
            "contactNumber":"17746302546",
            "idCard":"41142515558877"
        },        {
            "batchNumber":"2021-11-17-0033批号",
            "transportWeight":"49.3",
            "carNumber":"车牌号02-3",
            "carModel":"车型02-3",
            "driverName":"张三",
            "contactNumber":"17746302456",
            "idCard":"41142515554525"
        }
    ]
}

2.添加到数据库表

 数据结构:一个合同号对应多个批号,一个批号对应多个车辆。

数据库表:按照单一车辆信息,单条存储

思路:1.遍历车辆信息,

           2.通过车辆批号找到对应的品位信息cu,Au,Ag,

           3.获取合同号信息

废话不多说,直接上代码。

  @Override
    public int domesticMaterialsInfo(Map<String,Object> params){
        boolean b=false;
        JSONObject jsonObject=null;
        //判断params参数不为空
        if (params != null) {
            //传入的数据转成json对象
            jsonObject= (JSONObject) JSON.toJSON(params);
        }else {
            //params为空返回null
            return 0;
        }
        //判断json数组不为空     注意:不可以用is.Empty
        if (jsonObject.getJSONArray("driverDetails")!=null) {
            //获取jason中的数组
            JSONArray driverDetailsJsonArray = jsonObject.getJSONArray("driverDetails");
            //循环数组
            for (int i = 0; i < driverDetailsJsonArray.size(); i++) {
                //创建实体类   (实体类不要放在循环外面,否则插入只能插入一条数据)
                TruckScaleMeasurementEntity truckEntity= new TruckScaleMeasurementEntity();
                //获取数组中的对象保到实体          array--》获取json对象---》获取值
                truckEntity.setFLotNumber((String) driverDetailsJsonArray.getJSONObject(i).get("batchNumber"));//批配批号
                truckEntity.setFForecastGross((String) driverDetailsJsonArray.getJSONObject(i).get("transportWeight"));//预报毛重
                truckEntity.setFCarsname((String) driverDetailsJsonArray.getJSONObject(i).get("carNumber"));//车牌号
                truckEntity.setFCarsmodel((String) driverDetailsJsonArray.getJSONObject(i).get("carModel"));//车型
                truckEntity.setFDriversname((String) driverDetailsJsonArray.getJSONObject(i).get("driverName"));//司机姓名
                truckEntity.setFDriversPhone((String) driverDetailsJsonArray.getJSONObject(i).get("contactNumber"));//手机号
                truckEntity.setFDriversIdcard((String) driverDetailsJsonArray.getJSONObject(i).get("idCard"));//身份证
                truckEntity.setFInOutDate((Date) driverDetailsJsonArray.getJSONObject(i).get("transportTime"));//预报进厂日期
                //判断json数组不为空     注意:不可以用is.Empty
                if (jsonObject.getJSONArray("CarTransport")!=null) {
                    //获取jason中的数组
                    JSONArray carTransportJsonArray = jsonObject.getJSONArray("CarTransport");
                    //循环数组
                    for (int j = 0; j < carTransportJsonArray.size(); j++) {
                        //判断数组和上面的数据对应   一对多的关系(具体看业务数据)    保持数据对应
                        if (carTransportJsonArray.getJSONObject(j).get("batchNumber").equals(driverDetailsJsonArray.getJSONObject(i).get("batchNumber"))){
                            //获取数组中的对象保到实体          array--》获取json对象---》获取值
                            truckEntity.setFTruckNum((String) carTransportJsonArray.getJSONObject(j).get("carAmount"));//车数
                            truckEntity.setFCu((String) carTransportJsonArray.getJSONObject(j).get("cuGrade"));//预报cu铜品位
                            truckEntity.setFAu((String) carTransportJsonArray.getJSONObject(j).get("auGrade"));//预报Au金品位
                            truckEntity.setFAg((String) carTransportJsonArray.getJSONObject(j).get("agGrade"));//预报Ag银品位
                        }
                    }
                }
                //判断json对象不为空     注意:不可以用is.Empty
                if (jsonObject.getJSONObject("arrivalReport")!=null) {
                    //判断json对象中 的json对象不为空     注意:不可以用is.Empty(如果不判断,不存在会报500)
                    if ( jsonObject.getJSONObject("arrivalReport").getJSONObject("contractContent")!=null) {
                        //获取值               获取json对象-->获取json对象--->获取值
                        truckEntity.setFContractBillNo((String) jsonObject.getJSONObject("arrivalReport").getJSONObject("contractContent").get("contractNumber"));//合同编号
                        truckEntity.setFOrderNo((String) jsonObject.getJSONObject("arrivalReport").getJSONObject("contractContent").get("orderNumber"));//订单号
                        truckEntity.setFTo((String) jsonObject.getJSONObject("arrivalReport").getJSONObject("contractContent").get("buyer"));//去向
                        truckEntity.setFFrom((String) jsonObject.getJSONObject("arrivalReport").getJSONObject("contractContent").get("seller"));//来源
                        truckEntity.setFMaterialName((String) jsonObject.getJSONObject("arrivalReport").getJSONObject("contractContent").get("productName"));//物料名称
                        truckEntity.setFMaterial((String) jsonObject.getJSONObject("arrivalReport").getJSONObject("contractContent").get("productCode"));//物料编码
                    }
                    //获取json对象中的值添加到实体类中
                    truckEntity.setFArrivalNo((String) jsonObject.getJSONObject("arrivalReport").get("arrivalNo"));//到货单号
                }
                 b=truckScaleMeasurementService.save(truckEntity);
            }
        }
      return b?1:0;
    }

3.只做数据转换,不做添加到数据库操作。

将别的系统传过来的数据转,换成自己数据库对应字段,只做返回。不写入数据库。

直接上代码。

1.测试数据

{
    "arrivalReport":{
        "contractContent":{
            "contractNumber":"合同号",
            "orderNumber":"订单号",
            "buyer":"订单号",
            "seller":"来源",
            "productName":"物料名称",
            "productCode":"物料编码"
        },
        "arrivalNo":"到货单号"
    },
     "shipInformation":[
        {
            "roughWeight":"预报毛重1"
        },
        {
          "roughWeight":"预报毛重2"
        }
    ],
    "arrivalDetails":[
        {
            "batchNumber":"批次号1",
            "carAmount":"车数1",
            "grossWeight":"预报毛重1",
            "cuGrade":"cu1",
            "auGrade":"au1",
            "agGrade":"ag1"
        },
        {
            "batchNumber":"批次号2",
            "carAmount":"车数2",
            "grossWeight":"预报毛重2",
            "cuGrade":"cu2",
            "auGrade":"au2",
            "agGrade":"ag2"
        }
    ],
     "impurityElement":[
        {
            "elementName":"杂质元素名1",
            "impurityResult":"外商提供杂质元素加权品位1"
        },
        {
            "elementName":"杂质元素名2",
            "impurityResult":"外商提供杂质元素加权品位2"
        }
    ],
     "shipRelated":[
        {
            "weightDeduction":"杂质总量1",
            "weightMethod":"过磅类型1"
        },
        {
            "weightDeduction":"杂质总量2",
            "weightMethod":"过磅类型2"
        }
    ]
}

2.字段转换代码。

  @Override
    public Map importedMaterialsInfo(Map<String,Object> params){
        //创捷一个集合保存最终结果返回
        Map mapResult=new HashMap<>();
        JSONObject jsonObject=null;
        //判断params参数不为空
        if (params != null) {
            //转成json对象
            jsonObject= (JSONObject) JSON.toJSON(params);
        }else {
            //params为空返回null
            return mapResult;
        }
        if (jsonObject.getJSONObject("arrivalReport")!=null) {
            // 数据格式map(map)创建两个map集合
            Map arrivalReportMap = new HashMap<>();
            Map contractContentMap = new HashMap<>();
            //获取值存到map中                获取json对象-->获取json对象--->获取值
            if (jsonObject.getJSONObject("arrivalReport").getJSONObject("contractContent")!=null) {
                contractContentMap.put("f_contract_bill_no", jsonObject.getJSONObject("arrivalReport").getJSONObject("contractContent").get("contractNumber"));//合同编号
                contractContentMap.put("f_order_no", jsonObject.getJSONObject("arrivalReport").getJSONObject("contractContent").get("orderNumber"));//订单号
                contractContentMap.put("f_to", jsonObject.getJSONObject("arrivalReport").getJSONObject("contractContent").get("buyer"));//去向
                contractContentMap.put("f_from", jsonObject.getJSONObject("arrivalReport").getJSONObject("contractContent").get("seller"));//来源
                contractContentMap.put("f_material_name", jsonObject.getJSONObject("arrivalReport").getJSONObject("contractContent").get("productName"));//物料名称
                contractContentMap.put("f_material", jsonObject.getJSONObject("arrivalReport").getJSONObject("contractContent").get("productCode"));//物料名称
                arrivalReportMap.put("contractContent", contractContentMap);
            }else{
                arrivalReportMap.put("contractContent",  "未找到对应的数据");
            }
            arrivalReportMap.put("f_arrival_no", jsonObject.getJSONObject("arrivalReport").get("arrivalNo"));//到货单号
            mapResult.put("arrivalReport", arrivalReportMap);
        }else{
            mapResult.put("arrivalReport", "未找到对应的数据");
        }
        if (jsonObject.getJSONArray("shipInformation")!=null) {
            //获取jason对象中的数组
            JSONArray shipInformationJsonArray = jsonObject.getJSONArray("shipInformation");
            List shipInformationList = new ArrayList<>();//新建一个数组存放carTransportMap集合
            //循环json数组(carTransportJsonArray)
            for (int i = 0; i < shipInformationJsonArray.size(); i++) {
                Map shipInformationMap = new HashMap<>();
                //获取数组中的对象存入carTransportMap中          获取对象--->获取值
                shipInformationMap.put("f_forecast_gross", shipInformationJsonArray.getJSONObject(i).get("roughWeight"));//预报毛重
                shipInformationList.add(i, shipInformationMap);//放入list中(carTransportList)
            }
            mapResult.put("shipInformation", shipInformationList);//保存到最终结果
        }
        if (jsonObject.getJSONArray("arrivalDetails")!=null) {
            //获取jason对象中的数组
            JSONArray arrivalDetailsJsonArray = jsonObject.getJSONArray("arrivalDetails");
            List arrivalDetailsList = new ArrayList<>();//新建一个数组存放list集合
            for (int i = 0; i < arrivalDetailsJsonArray.size(); i++) {
                Map arrivalDetailsMap = new HashMap<>();
                //循环json数组
                arrivalDetailsMap.put("f_lot_number", arrivalDetailsJsonArray.getJSONObject(i).get("batchNumber"));//批配批号
                arrivalDetailsMap.put("f_truck_num", arrivalDetailsJsonArray.getJSONObject(i).get("carAmount"));//车数
                arrivalDetailsMap.put("f_forecast_gross", arrivalDetailsJsonArray.getJSONObject(i).get("grossWeight"));//预报毛重
                arrivalDetailsMap.put("f_cu", arrivalDetailsJsonArray.getJSONObject(i).get("cuGrade"));//Cu
                arrivalDetailsMap.put("f_au", arrivalDetailsJsonArray.getJSONObject(i).get("auGrade"));//Au
                arrivalDetailsMap.put("f_ag", arrivalDetailsJsonArray.getJSONObject(i).get("agGrade"));//Ag
                arrivalDetailsList.add(i, arrivalDetailsMap);//放入list中
            }
            mapResult.put("arrivalDetails", arrivalDetailsList);//保存到最终结果
        }
        if (jsonObject.getJSONArray("impurityElement")!=null){
            //获取jason对象中的数组
            JSONArray impurityElementJsonArray = jsonObject.getJSONArray("impurityElement");
            List impurityElementList = new ArrayList<>();//新建一个数组存放list集合
            for (int i = 0; i < impurityElementJsonArray.size(); i++) {
                Map impurityElementMap = new HashMap<>();
                //循环json数组
                impurityElementMap.put("elementName", impurityElementJsonArray.getJSONObject(i).get("elementName"));//杂质元素名
                impurityElementMap.put("impurityResult", impurityElementJsonArray.getJSONObject(i).get("impurityResult"));//外商提供杂质元素加权品位
                impurityElementList.add(i, impurityElementMap);
            }
            mapResult.put("impurityElement", impurityElementList);//保存到最终结果
        }
        if (jsonObject.getJSONArray("shipRelated")!=null) {
            // 获取jason对象中的数组
            JSONArray shipRelatedJsonArray = jsonObject.getJSONArray("shipRelated");
            List shipRelatedList = new ArrayList<>();//新建一个数组存放list集合
            for (int i = 0; i < shipRelatedJsonArray.size(); i++) {
                Map shipRelatedMap = new HashMap<>();
                //循环json数组
                shipRelatedMap.put("f_impurity", shipRelatedJsonArray.getJSONObject(i).get("weightDeduction"));//杂质总量
                shipRelatedMap.put("f_bill_type", shipRelatedJsonArray.getJSONObject(i).get("weightMethod"));//过磅类型
                shipRelatedList.add(i, shipRelatedMap);
            }
            mapResult.put("shipRelated", shipRelatedList);//保存到最终结果
        }
        //返回最终结果
        return mapResult;
    }

3.运行结果,

{
    "data": {
        "shipInformation": [
            {
                "f_forecast_gross": "预报毛重1"
            },
            {
                "f_forecast_gross": "预报毛重2"
            }
        ],
        "shipRelated": [
            {
                "f_impurity": "杂质总量1",
                "f_bill_type": "过磅类型1"
            },
            {
                "f_impurity": "杂质总量2",
                "f_bill_type": "过磅类型2"
            }
        ],
        "impurityElement": [
            {
                "impurityResult": "外商提供杂质元素加权品位1",
                "elementName": "杂质元素名1"
            },
            {
                "impurityResult": "外商提供杂质元素加权品位2",
                "elementName": "杂质元素名2"
            }
        ],
        "arrivalReport": {
            "contractContent": {
                "f_order_no": "订单号",
                "f_material_name": "物料名称",
                "f_contract_bill_no": "合同号",
                "f_from": "来源",
                "f_to": "订单号",
                "f_material": "物料编码"
            },
            "f_arrival_no": "到货单号"
        },
        "arrivalDetails": [
            {
                "f_ag": "ag1",
                "f_forecast_gross": "预报毛重1",
                "f_au": "au1",
                "f_cu": "cu1",
                "f_lot_number": "批次号1",
                "f_truck_num": "车数1"
            },
            {
                "f_ag": "ag2",
                "f_forecast_gross": "预报毛重2",
                "f_au": "au2",
                "f_cu": "cu2",
                "f_lot_number": "批次号2",
                "f_truck_num": "车数2"
            }
        ]
    },
    "code": 0,
    "msg": "succeed"
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JsonObject对象和jsonArrsy数组的获取JDK1.8,添加到表中 的相关文章

随机推荐

  • python-算法时间复杂度和空间复杂度

    大O表示法 O 名称 举例 1 常量时间 一次赋值 logn 对数时间 折半查找 n 线性时间 线性查找 nlogn 对数线性时间 快速排序 n 2 平方 两重循环 n 3 立方 三重循环 2 n 指数 递归求斐波那契数列 n 阶乘 旅行商
  • html文本元素

    文章目录 h p span pre code 实体字符 strong i em del s h h head 标题 一共有六级标题 hKaTeX parse error Expected got EOF at end of input 6
  • 【编译原理】 CS143 斯坦福大学公开课 第一周:简介

    youtube 1 1 Introduction to Compilers and interpreters 1 1 Introduction to Compilers and interpreters 编译器解释器介绍 两种主要的实现编程
  • three.js中聚光灯及其属性介绍

    一 聚光灯及其属性介绍 Three js中的聚光灯 SpotLight 是一种用于在场景中创建聚焦光照的光源类型 它有以下属性 color 聚光灯的颜色 intensity 聚光灯的强度 distance 聚光灯的有效距离 angle 聚光
  • [毕业设计]2023-2024年最新电子科学与技术专业毕设选题题目推荐汇总

    文章目录 1前言 2 如何选题 3 选题方向 3 1 嵌入式开发方向 3 2 物联网方向 3 3 人工智能方向 3 4 算法研究方向 3 5 学长作品展示 4 最后 1前言 近期不少学弟学妹询问学长关于电子科学与技术专业相关的毕设选题 学长
  • java如何检测连接池连接情况,如何检查是否使用了连接池

    I use HSQLDB EclipseLink Gemini on OSGI framework Felix In spite that I ve set pool in persistence xml I have serious su
  • 全网最全谷粒商城记录_01、简介-项目介绍(2022-07-06更新完成)

    声明 本教程不收取任何费用 欢迎转载 尊重作者劳动成果 不得用于商业用途 侵权必究 目录 分布式基础 全栈开发篇 分布式高级 微服务架构篇 高可用集群 架构师提升篇 希望大家 微服务架构图简单介绍 项目简介 1 项目背景 1 电商模式 1
  • JavaWeb学习笔记-part1

    互联网通信 什么是互联网通信 两台计算机通过网络实现文件共享行为 就是互联网通信 互联网通信中的角色划分 客户端 用于发送请求的计算机 服务端 用于接受请求 并满足请求的计算机 互联网通信模型 C S通信模型 client software
  • Handler机制与原理

    为什么会出现内存泄漏问题呢 分析 Handler使用是用来进行线程间通信的 所以新开启的线程是会持有Handler引用的 如果在Activity等中创建Handler 并且是非静态内部类的形式 就有可能造成内存泄漏 非静态内部类是会隐式持有
  • uniapp 开发微信小程序之新版隐私协议

    自从微信小程序官方更新隐私协议 用户必须同意之后 才能获取个人信息 这就导致在获取用户信息之前 需要有个隐私协议弹窗 大致如下图 微信小程序官方提供的API和 uniapp 开发的稍微有点区别 这里只记录 uniapp 开发的 如果需要微信
  • 高中学历的程序员,以包装的方式进入现在的公司,想跳槽咋办?

    网友自述 我在现在广州这家公司工作了两年 技术上有一定提升 但这两年我过得一直不是很快乐 因为我学历包装 所以我不敢跟同事交往太深 一直孤身一人 非常难受 可能这就是代价吧 现在我想换一个公司 我不想再用假身份了 但不知道用高中学历是否能够
  • Java对点、线、面生成栅格瓦片jpg,并渲染呈现

    Java对点 线 面生成栅格瓦片jpg 并渲染呈现 1 效果图 2 原理 2 1 面瓦片的生成 2 2 线瓦片的生成 2 3 多点瓦片的生成 3 源码 参考 这篇博客将介绍从前端HTML页面到后端预生成栅格瓦片jpg 并提供查询接口供前端h
  • Python文件操作

    1 with open E 信息 docx rb as f 2 read data f read 3 f closed rb 以二进制形式读取指定路径的文件 再以二进制形式写入指定路径 wb 1 with open E 信息 2 docx
  • Go Web编程实战(6)----反射

    目录 反射 反射的3大原则 接口类型变量 转换为 反射类型对象 反射类型对象 转换为 接口类型变量 反射类型对象 修改 值必 可写的 反射 与其他语言一样 Go语言的反射同样是指 计算机程序在运行时 可以访问 检测和修改它本身状态或行为的一
  • MAC 怎么终端怎么退出和进入Anaconda环境

    mac安装完anaconda 后 命令行窗口默认使用conda的 取消默认 用以下一行代码在命令行运行即可 重启终端 conda config set auto activate base false 将false改为true设置默认环境为
  • Codeforces 1475C. Ball in Berland(二元容斥)

    题目传送门 题意 一个班级有a个男生和b个女生 现在这个班级有k对男女愿意一起出席毕业典礼 这里注意k对男女中可能会有某个男生或女生出现在多个pair中 你从这k对中找出两对 使得这两对中的男生不相同 女生不相同 即一个男生或女生不可能在一
  • cuda 矩阵乘法,从最容易理解到算得最快(第二版源码-tile机制+共享内存)

    下面我们仅仅引入tiling方法 在共享内存中进行分块矩阵的乘法运算 先分析一下能够减少多少次对全局存储区的访问 当M N K 4096时 用第一版的代码 忽略cache的缓存时 需要从全局存储区读取2 4096 3 个float变量 为了
  • 法拉利虚拟学院2010 服务器,法拉利虚拟学院2010

    意大利著名好车品牌 法拉利 一直在世界上享受名誉 该游戏作品将带领玩家感悟法拉利的文化底蕴 游戏介绍 法拉利虚拟学院2010 包括了2010款法拉利F1赛车F10 以及三条通过镭射扫描技术绘制的高精度赛道 Fiorano Mugello N
  • spring boot 简介以及作用

    我们都知道spring是一个功能非常强大的框架 但是它也存在非常不好的弱点 也是对于我们普通的程序员的致命的弱点 就是它的配置文件太多了 而 在开发界一直有一句话 就是约定大于配置 这样一句话 就是说系统 类库 框架应该假定合理的默认值 而
  • JsonObject对象和jsonArrsy数组的获取JDK1.8,添加到表中

    1 基础数据结构 一个合同号对应多个批号 一个批号对应多个车辆 arrivalReport contractContent contractNumber 2021 11 17合同号 orderNumber 2021 11 17 0032订单