- 需求:根据物料信息获取子配件物料类型,接口是用友U8接口
根据物料信息获取子配件信息,下面就是需要解析的json数据:
{ "returnCode":0, "returnMessage":"成功", "fileInfo":{ "cInvCode":"G21501161", "cInvAddCode":"BRG-1161", "cInvName":"IMN-S6M-SPA-800玻璃组件", "cInvStd":null, "cInvUnit":"PCS", "iBomType":1, "iVersionNO":10, "cVersionDesc":"A0", "dVersionEffDate":"2000-01-01", "dVersionEndDate":"2099-12-31", "cIdentCode":null, "cIdentDesc":null, "cCreateUser":"801126", "dCreateTime":"2019-07-08 17:23:46", "cModifyUser":null, "dModifyTime":null, "cRelsUser":"803466", "dRelsTime":"2019-08-30 15:13:02", "cCloseUser":null, "dCloseTime":null, "iStatus":3, "fileList":[ { "iSortSeq":10, "cOpSeq":"0000", "cInvCode":"G30200101219", "cInvAddCode":"LB-4013", "cInvName":"6mm平玻", "cInvStd":"1949*708*6", "cInvUnit":"平方米", "cInvAssUnit":"PCS", "iChangeRate":1.38, "iFVFlag":1, "iBaseQtyN":1.38, "iBaseQtyD":1, "iCompScrap":0, "iAssBaseQtyN":1, "iWIPType":3, "cDepCode":null, "cDepName":null, "cWhCode":null, "cWhName":null, "cRemark":null, "cInvDefine1":"光玻", "cInvDefine2":null, "cInvDefine3":null, "cInvDefine4":null, "cInvDefine5":null, "cInvDefine6":null, "cInvDefine7":null, "cInvDefine8":null, "cInvDefine9":null, "cInvDefine10":null, "cInvDefine11":null, "cInvDefine12":null, "cInvDefine13":null, "cInvDefine14":null, "cInvDefine15":null, "cInvDefine16":null, "cDefine22":"RS-EF单面", "cDefine23":null, "cDefine24":"1.000000", "cDefine25":"0.000", "cDefine26":1, "cDefine27":null, "cDefine28":"PCS", "cDefine29":null, "cDefine30":null, "cDefine31":null, "cDefine32":null, "cDefine33":null, "cDefine34":null, "cDefine35":null, "cDefine36":null, "cDefine37":null } ] }}
目的是要获取”cInvCode”:”G30200101219″这个信息的前7位;
- 首先理解JSONArrary和JsonObject
1、JSONObject和JSONArray的数据表示形式
JSONObject的数据是用 { } 来表示的,
例如: { “id”:1,”name”:”李四” }
而JSONArray,顾名思义是由JSONObject构成的数组,用 [ { } , { } , …… , { } ] 来表示
例如: [ { “id”:1,”name”:”李四” } , { “id”:2,”name”:”王二” } } ] ;
表示了包含2个JSONObject的JSONArray。
可以看到明显的区别,里面用的是多个 { } ,最外面用的是 [ ] ;
2、如何从字符串String获得JSONObject对象和JSONArray对象
JSONObject jsonObject = new JSONObject ( String str);
JSONArray jsonArray = new JSONArray(String str ) ;
3、如何从JSONArray中获得JSONObject对象
大家可以把JSONArray当成一般的数组来对待,只是获取的数据内数据的方法不一样
JSONObject jsonObject = jsonArray.getJSONObject(i) ;
4、获取JSON内的数据
int id= jsonObject.getInt ( “id” ) ; // 这里的id得到的数据就是 1 .
String name = jsonObject.getString( ” name”) ; // 这里的name得到的数据就是 李四
- 解析数据
public String getGlassType(String sku){ String json = HttpUtils.sendPost(u8murl+"getU8InventoryBOM", "{\"userCode\":\"admin\",\"terminalCaption\":\"001122334455\",\"operationCode\":101,\"fileCode\":\""+sku+"\"}"); JSONObject jb = JSON.parseObject(json); JSONArray glassTypeArr = jb.getJSONObject("fileInfo").getJSONArray("fileList"); for (int i = 0; i < glassTypeArr.size(); i++) { String getGlassTypetype = glassTypeArr.getJSONObject(i).getString("cInvCode"); if(getGlassTypetype.substring(0, 2).equals("G3")) return getGlassTypetype.length()>7?getGlassTypetype.substring(0, 7):""; } return ""; }
返回结果
- 戏说fastjson
漏洞之王漏穿肠:fastjson,罪魁祸首就是autoType特性。