JAVA後臺序列化屬性時給予IOS和安卓所有int double 轉換String 所有的value值都帶上雙引號
阿新 • • 發佈:2019-01-11
-
今天和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