非標准json字符串轉換成json格式字符串


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

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM