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