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

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

方法 其他 屬性 json對象 獲取 csdn return src 解決辦法

這幾天,調用別人接口返回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

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