C#调用接口返回json数据中含有双引号 或其他非法字符的解决办法

这几天,调用别人接口返回json数据含有特殊符号(双引号),当转换成json对象总是报错,

json字符格式如下

{
"BOXINFO":[
{
"ITEM_ID":"",
"ITEM_NAME":"抗链球菌溶血素"O"(ASO)测定试剂盒(胶乳免)",
"QTY":,
"NOTES":"厂牌(河北恒利集团制药股份有限公司)批号(1172292)"
},
{
"ITEM_ID":"",
"ITEM_NAME":"茵栀黄颗粒",
"QTY":,
"NOTES":"厂牌(鲁南厚普制药有限公司)批号(00917063)"
}
]
}

json在线解析

C#调用接口返回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 = ; i < n; i++)
{
//查找json属性值(:+" )
if (temp[i] == ':' && temp[i + ] == '"')
{
//循环属性值内的字符(:+2 推算到value值)
for (int j = i + ; j < n; j++)
{
//判断是否是英文双引号
if (temp[j] == '"')
{
//排除json属性的双引号
if (temp[j + ] != ',' && temp[j + ] != '}')
{
//替换成中文双引号
temp[j] = '”';
}
else if (temp[j + ] == ',' || temp[j + ] == '}')
{
break;
}
}
else if (temp[j] == '-')
{
temp[j] = ' ';
}
else if (true)
{
// 要过虑其他字符,继续添加判断就可以
}
}
}
}
return new String(temp);
}

转换后的结果(上面函数是将json数据中属性值的英文双引号改成中文的)

C#调用接口返回json数据中含有双引号 或其他非法字符的解决办法

还有另外一种方法是将json的特殊字符前加上转义字符(\),如:

{
"BOXINFO":[
{
"ITEM_ID":"",
"ITEM_NAME":"抗链球菌溶血素\"O\"(ASO)测定试剂盒(胶乳免)",
"QTY":,
"NOTES":"厂牌(河北恒利集团制药股份有限公司)批号(1172292)"
},
{
"ITEM_ID":"",
"ITEM_NAME":"茵栀黄颗粒",
"QTY":,
"NOTES":"厂牌(鲁南厚普制药有限公司)批号(00917063)"
}
]
}

转义后结果

C#调用接口返回json数据中含有双引号 或其他非法字符的解决办法

参考来源地址:

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

上一篇:git config配置文件


下一篇:TabControl TabPage添加关闭按钮