JAVA后台序列化属性时给予IOS和安卓所有int double 转换String 所有的value值都带上双引号

  1. 今天和IOS安卓做对接的时候忽然发现了一个错误,就是属性一致  数据类型不一致 查了半天才发现错误时数据库为NULL 到底怎么回事呢,原来安卓和IOS无法识别NULL,所以我再为NULL的时候直接给属性拼接成了空字符串,但是有数据的时候是int,无数据的时候是String,这就尴尬了,然后找了半天我也没找到解决办法最后一狠心 自己写了一套,直接调用底层封装了一个方法,接下来上干货

  2. 代码

 public static String toJsonStringLi(String str){
        char[] chars = str.toCharArray();
        StringBuffer stringBuffer1 = new StringBuffer();//冒号的下标
        StringBuffer stringBuffer2 = new StringBuffer();//逗号的下标
        StringBuffer stringBuffer3 = new StringBuffer();// }的下标
        for(int i =0;i<chars.length;i++){
            String s = String.valueOf(chars[i]);
            if(s.equals(":")){
                stringBuffer1.append(i);
                stringBuffer1.append(",");
            }
        }
        for(int i =0;i<chars.length;i++){
            String s = String.valueOf(chars[i]);
            if(s.equals(",")){
                stringBuffer2.append(i);
                stringBuffer2.append(",");
            }
        }
        for(int i =0;i<chars.length;i++){
            String s = String.valueOf(chars[i]);
            if(s.equals("}")){
                stringBuffer3.append(i);
                stringBuffer3.append(",");
            }
        }
        String[] ins1 = stringBuffer1.toString().split(",");
        String[] ins2 = stringBuffer2.toString().split(",");
        String[] ins3 = stringBuffer3.toString().split(",");
        int l = 0;
        for (int i=0;i<ins1.length;i++){
            int w = Integer.valueOf(ins1[i])+1;
            int b = Integer.valueOf(ins1[i])+2;
            String t = str.substring(w+l,b+l);
            if(!t.equals("\"")){
                StringBuffer stringBuffer= new StringBuffer(str);
                stringBuffer.insert(w+l,"\"");
                str = stringBuffer.toString();
                l++;
            }
            if(ins2.length>i){
                w = Integer.valueOf(ins2[i])-1;
                b = Integer.valueOf(ins2[i]);
                t = str.substring(w+l,b+l);
                if(!t.equals("\"")){
                    StringBuffer stringBuffer= new StringBuffer(str);
                    str = stringBuffer.insert(b+l,"\"").toString();
                    l++;
                }
            }
        }
        for (int i=0;i<ins3.length;i++){
            int w = Integer.valueOf(ins3[i])-1;
            int b = Integer.valueOf(ins3[i]);
            String t = str.substring(w+l,b+l);
            if(!t.equals("\"")){
                StringBuffer stringBuffer= new StringBuffer(str);
                str = stringBuffer.insert(b+l,"\"").toString();
                l++;
            }
        }
       return str;
    }

效果

  public static void main(String[] args) throws Exception {
        Map<String, Integer> map = new HashMap<String, Integer>();
        map.put("aa", 111);
        map.put("bb", 222);
        map.put("cc", 333);
        map.put("dd",44444);
        String str = JsonUtil.toJson(map);
        System.out.println(str);
        System.out.println(toJsonStringLi(str));
    }

  

{"aa":111,"bb":222,"cc":333,"dd":44444}
{"aa":"111","bb":"222","cc":"333","dd":"44444"}

不要问我注释为什么不清楚,因为我要下班了,有问题直接找我就行

QQ:1916172575

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值