C#調用接口返回json數據中含有雙引號 或其他非法字符的解決辦法


這幾天,調用別人接口返回json數據含有特殊符號(雙引號),當轉換成json對象總是報錯,

json字符格式如下

{
    "BOXINFO":[
        {
            "ITEM_ID":"100201709153277",
            "ITEM_NAME":"抗鏈球菌溶血素"O"(ASO)測定試劑盒(膠乳免)",
            "QTY":6,
            "NOTES":"廠牌(河北恆利集團制葯股份有限公司)批號(1172292)"
        },
        {
            "ITEM_ID":"100201709153278",
            "ITEM_NAME":"茵梔黃顆粒",
            "QTY":3,
            "NOTES":"廠牌(魯南厚普制葯有限公司)批號(00917063)"
        }
    ]
}

json在線解析

如何解決json數據中屬性值包含雙引號問題,可用以下函數

        /// <summary>
        /// json字符串將屬性值中的英文雙引號變成中文雙引號
        /// </summary>
        /// <param name="strJson">json字符串</param>
        /// <returns></returns>
        public string JsonReplaceSign(string strJson)
        {
            //獲取每個字符
            char[] temp = strJson.ToCharArray();
            //獲取字符數組長度
            int n = temp.Length;
            //循環整個字符數組
            for (int i = 0; i < n; i++)
            {
                //查找json屬性值(:+" )
                if (temp[i] == ':' && temp[i + 1] == '"')
                {
                    //循環屬性值內的字符(:+2 推算到value值)
                    for (int j = i + 2; j < n; j++)
                    {
                        //判斷是否是英文雙引號
                        if (temp[j] == '"')
                        {
                            //排除json屬性的雙引號
                            if (temp[j + 1] != ',' && temp[j + 1] != '}')
                            {
                                //替換成中文雙引號
                                temp[j] = '';
                            }
                            else if (temp[j + 1] == ',' || temp[j + 1] == '}')
                            {
                                break;
                            }
                        }
                        else if (temp[j] == '-')
                        {
                            temp[j] = ' ';
                        }
                        else if (true)
                        {
                            // 要過慮其他字符,繼續添加判斷就可以
                        }
                    }
                }
            }
            return new String(temp);
        }

轉換后的結果(上面函數是將json數據中屬性值的英文雙引號改成中文的)

還有另外一種方法是將json的特殊字符前加上轉義字符(\),如:

{
    "BOXINFO":[
        {
            "ITEM_ID":"100201709153277",
            "ITEM_NAME":"抗鏈球菌溶血素\"O\"(ASO)測定試劑盒(膠乳免)",
            "QTY":6,
            "NOTES":"廠牌(河北恆利集團制葯股份有限公司)批號(1172292)"
        },
        {
            "ITEM_ID":"100201709153278",
            "ITEM_NAME":"茵梔黃顆粒",
            "QTY":3,
            "NOTES":"廠牌(魯南厚普制葯有限公司)批號(00917063)"
        }
    ]
}

轉義后結果

 參考來源地址:

https://blog.csdn.net/ymlkl/article/details/41959297?utm_source=blogxgwz0


免責聲明!

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



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