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