非标准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" }*/