这几天,调用别人接口返回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