非標准json字符串轉換成json格式字符串
在工作中,會遇到中間件平台輸出的日志不是標准json格式的,在接口測試工作中,如果報文節點字段比較多,手工替換耗時,而且難免會出錯。
所以希望用代碼,來實現字符串轉換。
非標准的json報文示例如下:
String a = "{categoryCode=R90046591,pageSize=50,pageNo=1,vendorCode=709028701}"; String b = "{distributeSys=YHCP,list=[{shelvesStatus=1,cmmdtyCode=0000000007614145711,model=Z,supplierCode=0000000000,b2BDocItemId=1,type=7,chanCode=YH},{shelvesStatus=1,cmmdtyCode=0000000007614145751,model=Z,supplierCode=0000000000,generalCmmdtyCode=0000000007614145711,b2BDocItemId=5,type=7,chanCode=YH}],b2BDocId=11111111}"; String c = "{supplierCode=713536971,productList=[122996533051,122953951621]}"; String d = "{supplierCmCode=48913380045271,productCode=11026400731,productTitle=黑人(DARLIE)超白牙膏90g,grossWeight=0.090,productPicList=[{picUrl=https://image/tycfNU-ngWpu3uBNmEcn1A.jpg_800w_800h,picSort=1},{picUrl=https://image/JJmbVALgcTWbuM6A-kmPoQ.jpg_800w_800h,picSort=2},{picUrl=https://image/EkSruhmI3CbjG5n2tisWnQ.jpg_800w_800h,picSort=3},{picUrl=https://image/53rKCwcYTaQ-H-LL_yQFXw.jpg_800w_800h,picSort=4},{picUrl=https://image/aPa4c1U1EwP3CHFiU2FMrQ.jpg_800w_800h,picSort=5}],detailPicList=[{picUrl=http://uimg/sop/commodity/219601388160106773180000_x.jpg,picSort=1},{picUrl=http://uimg/sop/commodity/201508180123139699_x.jpg,picSort=2},{picUrl=http://uimg/sop/commodity/201508180124014879_x.jpg,picSort=3},{picUrl=http://uimg/sop/commodity/203139007101664225245710_x.jpg,picSort=4}],referencePrice=,sellingPrice=6.10,commissionRate=,salesStatus=,sellingPoints=,paramList=[{paramCode=000158,paramValue=中國廣東中山市},{paramCode=007930,paramValue=3},{paramCode=005736,paramValue=01}],inventory=9983,vendorCode=714615751,ip=111.111.111.111,operateAccount=669}";
java代碼如下:
import org.junit.Test; public class TransStringToJson { //日志平台報文非標准json格式字符串轉為json字符串 public String stringToJson(String message) { String result = ""; //替換=為":" if (message.contains("=")) { message = message.replace("=", "\":\""); } //替換{為{" if (message.contains("{")) { message = message.replace("{", "{\""); } //替換}為"} if (message.contains("}")) { message = message.replace("}", "\"}"); } //替換[為[" if (message.contains("[")) { message = message.replace("[", "[\""); } //替換]為"] if (message.contains("]")) { message = message.replace("]", "\"]"); } //替換,為"," if (message.contains(",")) { message = message.replace(",", "\",\""); } //替換"[為[ if (message.contains("\"[")) { message = message.replace("\"[", "["); } //替換]"為] if (message.contains("]\"")) { message = message.replace("]\"", "]"); } //替換"{為{ if (message.contains("\"{")) { message = message.replace("\"{", "{"); } //替換}"為} if (message.contains("}\"")) { message = message.replace("}\"", "}"); } result = message; return result; } @Test public void fun1() { String a = "{categoryCode=R90046591,pageSize=50,pageNo=1,vendorCode=709028701}"; String res = stringToJson(a); System.out.println(res); } @Test public void fun2() { String a = "{distributeSys=YHC,list=[{shelvesStatus=1,cmmdtyCode=0000000007614145711,model=Z,supplierCode=0000000000,b2BDocItemId=1,type=7,chanCode=YH},{shelvesStatus=1,cmmdtyCode=0000000007614145751,model=Z,supplierCode=0000000000,generalCmmdtyCode=0000000007614145711,b2BDocItemId=5,type=7,chanCode=YH}],b2BDocId=11111111}"; String res = stringToJson(a); System.out.println(res); } @Test public void fun3() { String a = "{supplierCode=713536971,productList=[122996533051,122953951621]}"; String res = stringToJson(a); System.out.println(res); } @Test public void fun4() { String a = "{supplierCmCode=48913380045271,productCode=11026400731,productTitle=黑人(DARLIE)超白牙膏90g,grossWeight=0.090,productPicList=[{picUrl=https://image/tycfNU-ngWpu3uBNmEcn1A.jpg_800w_800h,picSort=1},{picUrl=https://image/JJmbVALgcTWbuM6A-kmPoQ.jpg_800w_800h,picSort=2},{picUrl=https://image/EkSruhmI3CbjG5n2tisWnQ.jpg_800w_800h,picSort=3},{picUrl=https://image/53rKCwcYTaQ-H-LL_yQFXw.jpg_800w_800h,picSort=4},{picUrl=https://image/aPa4c1U1EwP3CHFiU2FMrQ.jpg_800w_800h,picSort=5}],detailPicList=[{picUrl=http://uimg/sop/commodity/219601388160106773180000_x.jpg,picSort=1},{picUrl=http://uimg/sop/commodity/201508180123139699_x.jpg,picSort=2},{picUrl=http://uimg/sop/commodity/201508180124014879_x.jpg,picSort=3},{picUrl=http://uimg/sop/commodity/203139007101664225245710_x.jpg,picSort=4}],referencePrice=,sellingPrice=6.10,commissionRate=,salesStatus=,sellingPoints=,paramList=[{paramCode=000158,paramValue=中國廣東中山市},{paramCode=007930,paramValue=3},{paramCode=005736,paramValue=01}],inventory=9983,vendorCode=714615751,ip=111.111.111.111,operateAccount=669}"; String res = stringToJson(a); System.out.println(res); } }
測試結果:
//String a = {"categoryCode":"R90046591","pageSize":"50","pageNo":"1","vendorCode":"709028701"}
//String b = {"distributeSys":"YHC","list":[{"shelvesStatus":"1","cmmdtyCode":"0000000007614145711","model":"Z","supplierCode":"0000000000","b2BDocItemId":"1","type":"7","chanCode":"YH"},{"shelvesStatus":"1","cmmdtyCode":"0000000007614145751","model":"Z","supplierCode":"0000000000","generalCmmdtyCode":"0000000007614145711","b2BDocItemId":"5","type":"7","chanCode":"YH"}],"b2BDocId":"11111111"}
//String c = {"supplierCode":"713536971","productList":["122996533051","122953951621"]}
//String d = {"supplierCmCode":"48913380045271","productCode":"11026400731","productTitle":"黑人(DARLIE)超白牙膏90g","grossWeight":"0.090","productPicList":[{"picUrl":"https://image/tycfNU-ngWpu3uBNmEcn1A.jpg_800w_800h","picSort":"1"},{"picUrl":"https://image/JJmbVALgcTWbuM6A-kmPoQ.jpg_800w_800h","picSort":"2"},{"picUrl":"https://image/EkSruhmI3CbjG5n2tisWnQ.jpg_800w_800h","picSort":"3"},{"picUrl":"https://image/53rKCwcYTaQ-H-LL_yQFXw.jpg_800w_800h","picSort":"4"},{"picUrl":"https://image/aPa4c1U1EwP3CHFiU2FMrQ.jpg_800w_800h","picSort":"5"}],"detailPicList":[{"picUrl":"http://uimg/sop/commodity/219601388160106773180000_x.jpg","picSort":"1"},{"picUrl":"http://uimg/sop/commodity/201508180123139699_x.jpg","picSort":"2"},{"picUrl":"http://uimg/sop/commodity/201508180124014879_x.jpg","picSort":"3"},{"picUrl":"http://uimg/sop/commodity/203139007101664225245710_x.jpg","picSort":"4"}],"referencePrice":"","sellingPrice":"6.10","commissionRate":"","salesStatus":"","sellingPoints":"","paramList":[{"paramCode":"000158","paramValue":"中國廣東中山市"},{"paramCode":"007930","paramValue":"3"},{"paramCode":"005736","paramValue":"01"}],"inventory":"9983","vendorCode":"714615751","ip":"111.111.111.111","operateAccount":"669"}
使用bejson網站(http://www.bejson.com/)工具將測試結果格式化校驗,便於查看節點明細
/*String a = { "categoryCode": "R90046591", "pageSize": "50", "pageNo": "1", "vendorCode": "709028701" }*/
/*String b= { "distributeSys":"YHC", "list":[{ "shelvesStatus":"1", "cmmdtyCode":"0000000007614145711", "model":"Z", "supplierCode":"0000000000", "b2BDocItemId":"1", "type":"7", "chanCode":"YH" },{ "shelvesStatus":"1", "cmmdtyCode":"0000000007614145751", "model":"Z", "supplierCode":"0000000000", "generalCmmdtyCode":"0000000007614145711", "b2BDocItemId":"5", "type":"7", "chanCode":"YH" }], "b2BDocId":"11111111" }*/
/*String c= { "supplierCode":"713536971", "productList":["122996533051","122953951621"] }*/
/*String d= { "supplierCmCode":"48913380045271", "productCode":"11026400731", "productTitle":"黑人(DARLIE)超白牙膏90g", "grossWeight":"0.090", "productPicList":[{ "picUrl":"https://image/tycfNU-ngWpu3uBNmEcn1A.jpg_800w_800h", "picSort":"1" },{ "picUrl":"https://image/JJmbVALgcTWbuM6A-kmPoQ.jpg_800w_800h", "picSort":"2" },{ "picUrl":"https://image/EkSruhmI3CbjG5n2tisWnQ.jpg_800w_800h", "picSort":"3" },{ "picUrl":"https://image/53rKCwcYTaQ-H-LL_yQFXw.jpg_800w_800h", "picSort":"4" },{ "picUrl":"https://image/aPa4c1U1EwP3CHFiU2FMrQ.jpg_800w_800h", "picSort":"5" }], "detailPicList":[{ "picUrl":"http://uimg/sop/commodity/219601388160106773180000_x.jpg", "picSort":"1" },{ "picUrl":"http://uimg/sop/commodity/201508180123139699_x.jpg", "picSort":"2" },{ "picUrl":"http://uimg/sop/commodity/201508180124014879_x.jpg", "picSort":"3" },{ "picUrl":"http://uimg/sop/commodity/203139007101664225245710_x.jpg", "picSort":"4" }], "referencePrice":"", "sellingPrice":"6.10", "commissionRate":"", "salesStatus":"", "sellingPoints":"", "paramList":[{ "paramCode":"000158", "paramValue":"中國廣東中山市" },{ "paramCode":"007930", "paramValue":"3" },{ "paramCode":"005736", "paramValue":"01" }], "inventory":"9983", "vendorCode":"714615751", "ip":"111.111.111.111", "operateAccount":"669" }*/