公司移动端要统一数据格式,要求返回的数据只有他们需要的,后台又不想天天写实例,于是就自己写了个工具把需要的字段筛选一下: 数据返回之后调用getMobileData(); 就会得到想要的数据.
public class GoJson {
/**
*
* @param list 通用集合
* @param str 需要一个自定义的字符数组 需要什么写什么 例如: String[] data = new String[]{"PHCD","USFL"};
* @return
* @Description:用于方便的给手机提供个性化需求数据
* @author:xiaoyang
* @time:2017-3-6 上午10:36:03l
*/
public List getMobileData(List list,String[] str){
List arrayList2 = new ArrayList();
int getSize = 0;
String strResult = "";
if(list.size()>0){
String listToString = listToString(list,'/');//得到用/ 分开的字符串
// str = new String[]{"PHCD","USFL"};
String[] split = listToString.split("/");//将数据字符串分解成为数组
String[] split2 = null ;
for (String splitList : split) {
splitList = splitList.replace(" ","");
getSize++;
strResult="";
strResult+=("{");
String stringSJ = Replacelabel(splitList,'{','}').toString();//将转好的字符串数组装入集合中
split2 = stringSJ.split(",");//得到去除,的第一个数组数据
StringBuffer strData = new StringBuffer();
for (int i = 0; i < split2.length; i++) {
strData = new StringBuffer();
strData.toString().trim();
for (String ifs : str) {
ifs = ifs.replaceAll("=","").trim();
ifs=ifs+"=";
ifs = ifs.trim();
if(split2[i].substring(0, split2[i].indexOf("=")).equals(ifs.substring(0,ifs.indexOf("=")))){
strData.append("\""+split2[i].split("=")[0]+"\":");
strData.append("\""+(split2[i].split("=").length>1 ? split2[i].split("=")[1]:"")+"\",");
}
}
strResult+=(strData.toString().trim());
}
if(!strResult.toString().trim().equals(""))
{
strResult=strResult.toString().trim().substring(0, strResult.toString().trim().length()-1).trim();
}
strResult+=("}");
arrayList2.add(strResult);
}
if(!strResult.toString().trim().equals(""))
{
strResult = strResult.toString().trim().substring(0, strResult.toString().trim().length()-1).trim();
}
//arrayList2.add(strResult);
//arrayList2.add(getSize);
return arrayList2;
}
return arrayList2;
}
/**
*
* Description: 替换字符串中掺杂的标签
* @author xiaoyang
* @date 下午5:12:45
*/
public String Replacelabel(String text,char str1,char str2) {
ArrayList<String> arrayList = new ArrayList<String>();
String newlabel="";
int num0 = 0 ;
int num1 =0;
for (int i = 0; i < text.length(); i++) {
char item = text.charAt(i);
if(item==str1){
num0=i+1;
}
if(item==str2){
num1=i;
newlabel=text.substring(num0, num1).trim();
newlabel = newlabel.trim();
newlabel = newlabel.replace(" ","");
return newlabel;
}
}
return null;
}
/**
*
* @param list 要转换的集合
* @param separator 切割符号
* @return
* @Description: 转换集合成字符串
* @author:xiaoyang
* @time:2017-3-6 上午11:20:48
*/
public String listToString(List list, char separator) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < list.size(); i++) {
sb.append(list.get(i)).append(separator);
}
return sb.toString().substring(0,sb.toString().length()-1).trim();
}
}
公司当前项目使用的是struts+WebService+ Mybatis 所以数据筛选完之后还做了如下处理 当然最后的字段格式可以方便的自己改变.
Total=String.valueOf(ListOfRows.size());
MsgData=String.valueOf(ListOfRows);
//MsgData = json.toString();
MsgType="success";
MsgContent="成功";
}else{
MsgData = json.toString();
MsgType="success";
MsgContent="成功";
}
}catch (Exception e) {
MsgType="error";
MsgContent="信息查询异常";
e.printStackTrace();
}
HttpServletResponse response = (HttpServletResponse) ActionContext.getContext().get(ServletActionContext.HTTP_RESPONSE);
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
try {
response.getWriter().print("{\"Total\":\""+Total+"\",\"MsgType\":\""+MsgType+"\",\"MsgContent\":\""+MsgContent+"\",\"MsgData\":"+MsgData+"}");
} catch (IOException e) {
e.printStackTrace();
}
return list;