前言:昨天去了朋友公司写代码,他说发现一个问题,就是数据利用上一篇封装的类去对应数据,返回值是空,然后我说是因为超出边界,然后我查询除了一个问题,在使用Gson gson = new Gson();的时候会将数据库的数据变成Apri 1 ,2018.....出现一个','号,然后上一篇文章中是以‘,’号为分割点,就会出现类属性数据,和截取出来的数据长度不一致的的情况。【也就是超出边界】
所以要用的是这个去转换你获取的数据
Gson gson = new GsonBuilder()
.setDateFormat("yyyy-MM-dd")
.create();
重点是我问为啥你查询出来的数据没有key!!key!!key!!呢???
他说这个框架就是这样的。无奈
现在写一个公共的数据映射方法,如果大家也是后台这个框架,请自取成果。
import com.google.gson.Gson;
import org.springframework.util.StringUtils;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
/**
* Created by xuhaiyan on 2018/5/29.
*/
public class DBStringToBean<T> {
public <T> List<T> stringToBean(String dbStr, Class<T> clazz) {
List<T> result = new ArrayList<T>();//返回数据结构封装
/*--------------------------创建key数组-----------------------*/
List<String> keyList = new LinkedList<>();
Field[] fields = clazz.getDeclaredFields();//利用反射原理
for (Field f : fields) {
keyList.add(f.getName());
}
/*---------------------data部分-------------------------------*/
String[] valueContentArray = null;
List<String> dbStringLinkedList = new LinkedList<>();
dbStr = dbStr.subSequence(dbStr.indexOf("[[") + 2, dbStr.lastIndexOf("]]")) + "";//去掉非法数据结构
if (!StringUtils.isEmpty(dbStr)) {
String[] strContentArray = dbStr.split("\\]\\,\\[");//组数再次分成分成list
for (String strOne : strContentArray) {
dbStringLinkedList.add(strOne);
}
}
/*string和key组合*/
try {
StringBuffer buffer = null;
for (int i = 0; i < dbStringLinkedList.size(); i++) {
buffer = new StringBuffer();
buffer.append("{");
String stringGetIndexValList = dbStringLinkedList.get(i);
valueContentArray = stringGetIndexValList.split(",");//list中取值
for (int j = 0; j < valueContentArray.length; j++) {
if (j > 0) {
buffer.append(",");
}
String key = keyList.get(j);
buffer.append("\"" + key + "\":" + valueContentArray[j]);
}
buffer.append("}");
T bean = parseJsonWithGson(buffer.toString(), clazz);
result.add(bean);
}
} catch (Exception e) {
}
return result;
}
/**
* @param jsonData
* @param type
* @param <T>
* @return
* @description 将Json一条【数据】解析成相应的映射对象---使用此需要导入gson.jar
*/
public static <T> T parseJsonWithGson(String jsonData, Class<T> type) {
Gson gson = new Gson();
T obj = gson.fromJson(jsonData, type);
return obj;
}
public static void main(String[] args) {
// String str = "[[\"35\",\"TSQ02-10001\",\"13\",\"基础型主机\",\"三重四级杆质谱系统\",\"TSQ Quantis\",50500.0,46000.0,42000.0],[\"36\",\"OPTON-32101\",\"21\",\"化学喷射装置\",\"大气压化学喷射装置\",\"APCI Source Kit\",1150.0,1050.0,950.0],[\"37\",\"OPTON-30666\",\"22\",\"启动包\",\"启动包\",\"Pre-Installation Kit\",110.0,100.0,90.0],[\"38\",\"OPTON-30626\",\"6\",\"软件\",\"食品安全方向定量软件\",\"TRACE FINDER general quan\",700.0,620.0,550.0],[\"39\",\"5400.0225\",\"13\",\"基础型主机\",\"UHPLC主机\",\"Vanquish Binary Flex w/o Detector\",9200.0,8300.0,7500.0],[\"40\",\"PEAK NM32LA\",\"19\",\"氮气发生器\",\"进口氮气发生器\",\"PEAK NM32LA\",4200.0,3800.0,3400.0],[\"41\",\"SANTAK\",\"20\",\"不间断电源\",\"1小时不间断电源\",\"UPS 10KVA\",730.0,660.0,600.0]]\n";
String str = "[[\"666047609ba744c4a454d1822d866834\",\"32689d13465242dfad62ee1cdbf34d17\",\"f97721e515924a89b44d41b4c1e45e23\",\"34a16b94c8c04c8685fa4040bece0558\",\"3333\",\"1000009_1000035\",\"1000009_1000035\",\"1000009_1000035.pdf\",2,\"Jul 17, 2018 3:23:48 PM\",null,\"3333\",\"河北\",\"唐山\",\"路北区\",\"3333\",\"wyy\",\"wyy\",\"18838122781\",\"wuyinyin@easylab.com\",\"rrr\",\"18838125845\",\"rrrr\",\"18838456545\",\"江西省\",\"九江市\",\"浔阳区\",\"55555\",\"ICS-900(单机)\",\"ICS-900(单机)\",\"IC\",\"离子色谱\",\"Thermo\",\"ICS-900\",0,0.0,null,\"七月 27, 2018\",\"四月 26, 2019\",9,1.0,50000.0,null,0.0,4500.0,40500.0,null,\"1\",null,null,null,null,0,null,null,\"3f78c353335e445a89c30d87a08d152f\",\"小唐\",\"XT\",2,null,null,null,null,null,null,null,null,0,null,null,0,0,null,6,0]]\n";
List<ShowOrderDetails> result = new DBStringToBean<ShowModularListBind>().stringToBean(str, ShowOrderDetails.class);
System.out.println(result);
}
上述针对的是返回的是list对象数据,格式为[[a,b,c],[d,e,f]]这种格式的,如果大家要返回的是一个对象[a,b,c]则在传入dbStr的时候要变成dbStr = "["+dbStr+"]"即可。
ShowOrderDetails是class的名字,大家如果使用这个框架,返回的数据只要是类里面的就行,随便什么类写进去就行
希望大家用这个框架的时候用的顺手
pom文件
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.3.1</version>
</dependency>