一、思路:
之前讲过一次JSON解析,但是当时还是懵懵的,现在再次复习一下:
如果你拿到的是一个String类型的字符串,但是,它的外形是Json格式的,取出其中的键值对(尤其是值)?
这里的思路是,先把String类型的字符串,转换成Json类型,然后再取就容易多了;但是是通过截取字符串来去,还是怎么弄?这里,有一个现成的包:
import com.alibaba.fastjson.JSON;
这个是alibaba的解析JSON的一个包,里面有个parse()方法,专门用来解析String类型,但是具有Json格式的字符串s1;
{
"SHEETSTATUSNAME": null,
"WCSJ": "",
"LASTOPENTIME": "2017-08-18 10:09:19",
"DATASTATUSID": "1",
"FLOWNODEID": "2",
"YSR": null,
"OPENERID": null,
"SHOWORDER": "144",
"SHEETNAME": null,
"ZGSJ": "2017-08-31",
"OPENER": null,
"DATATYPE": null,
"CREATEDATE": "2017-08-16 11:16:26",
"WCZT": null,
"ZRR": null,
"FXSJ": "2017-08-21",
"CREATEORGID": "92",
"WCQK": null,
}
这里只是具有JSON形式的,String类型的字符串,不是Json对象(JSONObject);
解析,核心方法是com.alibaba.fastjson.JSON中的parse()方法;
com.alibaba.fastjson.JSONObject jsonObject= (com.alibaba.fastjson.JSONObject) com.alibaba.fastjson.JSON.parse(s1);
这里,因为没有上下文,包名都写全了,但是不方便看,如果简写可以这样(仅仅是为了方便观看,上面的是标准写法):
JSONObject jsonObject= (JSONObject) JSON.parse(s1);
//这里的s1就是那个Json形式的字符串的名字;
二、解析
之后就是重复性劳动:
List<CheckList> checkLists = new ArrayList<>();
CheckList ck = new CheckList();
for(String s1 :checkListStr){
JSONObject jsonObject= (JSONObject) JSON.parse(s1);
//System.out.println(jsonObject);
ck.setROW_INDEX((String)jsonObject.get("ROW_INDEX"));
ck.setFXR((String) jsonObject.get("FXR"));
ck.setPATTERNID((String) jsonObject.get("PATTERNID"));
ck.setZGCS((String) jsonObject.get("ZGCS"));
ck.setSHEETID((String) jsonObject.get("SHEETID"));
ck.setCREATEUSERID((String) jsonObject.get("CREATEUSERID"));
ck.setYSR((String) jsonObject.get("YSR"));
ck.setFLOWNODENAME((String) jsonObject.get("FLOWNODENAME"));
ck.setFLOWNODEID((String) jsonObject.get("FLOWNODEID"));
//System.out.println(ck.getYSR());
//System.out.println(s1);
checkLists.add(ck);
}