使用JSON.toJSONString 导致的变量变多不准确。

今天在使用阿里的JSON将一个集合转换成一个json格式的字符串,但是,查看结构却发现不是自己想要的结果,具体的过程请看下面:
首先,我定义了一个实体了swdz:

static class SWDZ {
        public String pk_id;
        public String minecode;
        public String minename;
        public String station_code;
        public String address_name;
        public String station_name;
        public String monitoring_type_code;
        public String monitoring_type;
        public String jctime;
        public String jcvalue;
        public  String zdflag;
        public String JLDW;

        public String getPk_id() {
            return pk_id;
        }

        public void setPk_id(String pk_id) {
            this.pk_id = pk_id;
        }

        public String getMinecode() {
            return minecode;
        }

        public void setMinecode(String minecode) {
            this.minecode = minecode;
        }

        public String getMinename() {
            return minename;
        }

        public void setMinename(String minename) {
            this.minename = minename;
        }

        public String getStation_code() {
            return station_code;
        }

        public void setStation_code(String station_code) {
            this.station_code = station_code;
        }

        public String getAddress_name() {
            return address_name;
        }

        public void setAddress_name(String address_name) {
            this.address_name = address_name;
        }

        public String getStation_name() {
            return station_name;
        }

        public void setStation_name(String station_name) {
            this.station_name = station_name;
        }

        public String getMonitoring_type_code() {
            return monitoring_type_code;
        }

        public void setMonitoring_type_code(String monitoring_type_code) {
            this.monitoring_type_code = monitoring_type_code;
        }

        public String getMonitoring_type() {
            return monitoring_type;
        }

        public void setMonitoring_type(String monitoring_type) {
            this.monitoring_type = monitoring_type;
        }

        public String getJctime() {
            return jctime;
        }

        public void setJctime(String jctime) {
            this.jctime = jctime;
        }

        public String getJcvalue() {
            return jcvalue;
        }

        public void setJcvalue(String jcvalue) {
            this.jcvalue = jcvalue;
        }

        public String getJLDW() {
            return JLDW;
        }

        public void setJLDW(String JLDW) {
            this.JLDW = JLDW;
        }

        public String getZdflag() {
            return zdflag;
        }

        public void setZdflag(String zdflag) {
            this.zdflag = zdflag;
        }
    }

进行测试一个案例:

  List<SWDZ> dataList=new ArrayList<SWDZ>();
        String[] CDLXNAME={"水位", "水压", "水温","流量"};
        String[] CDLXCODE={"02001", "02002", "02003","04002"};
        String[] JLDW={"m", "Mpa", "°C","m3/h"};
        String jsondata=null;
       


                String  kafkadata="150623B0012000900004,长城五矿,00000001,8-1水文常观孔,8-1,148.110,442.568,20.63,2021-08-01/06:00:00,~150623B0012000900004,长城五矿,00000002,奥灰水文常观孔,奥灰水,69.220,291.844,19.19,2021-08-01/06:00:00,~150623B0012000900004,长城五矿,00000003,N-1水文常观孔,N-1,73.970,656.894,18.88,2021-07-06/06:00:00,~150623B0012000900004,长城五矿,00000004,N-2水文常观孔,N-2,129.110,684.922,19.63,2021-07-07/06:00:00,~150623B0012000900004,长城五矿,310100000,中央泵房1号排水管道,中央泵房1号管道排水量,0,2021-08-01/23:56:00,,,~150623B0012000900004,长城五矿,310200000,中央泵房2号排水管道,中央泵房2号管道排水量,0,2021-08-01/23:56:00,,,~150623B0012000900004,长城五矿,310300000,800水仓入口,800水仓入口明渠流量,14.931,2021-08-01/23:56:00,,,~150623B0012000900004,长城五矿,310500000,主斜井,主斜井明渠流量,5.143,2021-08-01/23:56:00,,,~150623B0012000900004,长城五矿,310600000,800石门,800石门明渠流量,9.443,2021-08-01/23:56:00,,,~";


                String [] temp1=kafkadata.split("~");
                System.out.println(temp1.length);
                     dataList.clear();
                for (int i=0;i<temp1.length;i++){
                    String []temp2=temp1[i].split(",",-1);
                  if ( temp2[7].length()!=0){
                    for (int j=0;j<3;j++){
                        SWDZ swdz=new SWDZ();
                        swdz.setPk_id(UUID.randomUUID().toString());
                        swdz.setMinecode(temp2[0]);
                        swdz.setMinename(temp2[1]);
                        swdz.setStation_code(temp2[2]);
                        swdz.setAddress_name(temp2[3]);
                        swdz.setStation_name(temp2[4]);
                        swdz.setMonitoring_type_code(CDLXCODE[j]);
                        swdz.setMonitoring_type(CDLXNAME[j]);
                        swdz.setJctime(temp2[8].replace("/"," "));
                        swdz.setJcvalue(temp2[j+5]);
                        swdz.setJLDW(JLDW[j]);
                        swdz.setZdflag("0");
                        dataList.add(swdz);
                    }
                }else {

                    SWDZ swdz=new SWDZ();
                    swdz.setPk_id(UUID.randomUUID().toString());
                    swdz.setMinecode(temp2[0]);
                    swdz.setMinename(temp2[1]);
                    swdz.setStation_code(temp2[2]);
                    swdz.setAddress_name(temp2[3]);
                    swdz.setStation_name(temp2[4]);
                    swdz.setMonitoring_type_code(CDLXCODE[3]);
                    swdz.setMonitoring_type(CDLXNAME[3]);
                    swdz.setJctime(temp2[6].replace("/"," "));
                    swdz.setJcvalue(temp2[5]);
                    swdz.setJLDW(JLDW[3]);
                    swdz.setZdflag("1");
                    dataList.add(swdz);

                }

            }

            jsondata = JSON.toJSONString(dataList);
            System.out.println(jsondata);

    }


}

运行的结果发现多了一个变量:
在这里插入图片描述
但是在debug的时候list集合里是不存在这种问题的,
在这里插入图片描述
后来反复查看JLDW(期间还更换了jar包的版本,但是问题还在)。发现是因为命名问题, 由setter,getter导致JSON.toJSONString()部分字段出现异常,在java的变量,都是驼峰命名,如:helloWorld,那么它生成的setter,getter方法就是,setHelloWorld(),getHelloWorld()。hWorld这样生成的时候,h不大写,依然小写。 调用JSON.toString(obj)中会将返回值中自动将首字母变小写,在JSON往回查的时候会默认get后一位为大写字母。)。就会出现这种诡异的事情,
我们将代码中的

     public String JLDW;
     改为
     public String jldw;

就解决了这种问题了

在这里插入图片描述

所以以后在码代码时,一定要注意命名的规范,可以避免一些不必要的错误。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值