public static String concatJson(String[] keys,String[] values,String[] alreadyJsonKeys){
if(keys==null|| values==null)
return null;
if(keys.length!=values.length)
return "Json转换出错:key与values长度不相等";
StringBuilder sb=new StringBuilder();
sb.append("{");
for(int i=0;i<keys.length;i++){
Object object=values[i];
if(object==null){
sb.append("\""+ keys[i] +"\":null,");
}else{
if(alreadyJsonKeys!=null
&&CollectionsUtils.indexOf(alreadyJsonKeys,keys[i])>=0){
sb.append("\""+ keys[i] +"\":" + object + ",");
}else{
sb.append("\""+ keys[i] +"\":\"" + object + "\",");
}
}
} if(sb.charAt(sb.length()-1)==','){
sb.deleteCharAt(sb.length()-1);
}
sb.append("}");
return sb.toString();
}
public static <T> String concatJson(List<T> list,boolean alreadyElementJson){
if(list==null)
return null;
StringBuilder sb=new StringBuilder();
sb.append("[");
int size=list.size();
for(int i=0; i<size;i++){
T object=list.get(i);
if(object==null){
sb.append("null");
}
if(object instanceof Date){
sb.append("\"" + object + "\",");
}else if(object instanceof String){
if(alreadyElementJson){ //已经是json字符串,不加引号
sb.append(object.toString()+",");
}else{
sb.append("\"" + object + "\",");
}
}else if (object instanceof Boolean){
sb.append(object.toString() + ",");
}else{
sb.append(objectToJson(object) + ",");
}
}
if(sb.charAt(sb.length()-1)==','){
sb.deleteCharAt(sb.length()-1);
}
sb.append("]");
return sb.toString();
} public static<T> String concatJson(List<T> jsonObjects){
if(jsonObjects==null){
return null;
}
if(jsonObjects.size()==0){
return null;
}
StringBuilder sb=new StringBuilder();
sb.append("[");
int size=jsonObjects.size();
for(int i=0;i<size;i++){
sb.append(objectToJson(jsonObjects.get(i))+",");
}
if(sb.charAt(sb.length()-1)==','){
sb.deleteCharAt(sb.length()-1);
}
sb.append("]");
return sb.toString();
}
public static <T> String objectToJson(T t){
if(t==null)
return null;
if(t instanceof List){
return concatJson((List)t,false);
}else if(t instanceof String ||t instanceof Date){
return "\""+t.toString()+"\"";
}else if( t instanceof Integer || t instanceof Long || t instanceof Double
|| t instanceof BigDecimal || t instanceof Float
|| t instanceof Boolean) {
return t.toString() ; //字符串
}
return t.toString();
}