C#调用接口返回json数据中含有双引号 或其他非法字符的解决办法
这几天,调用别人接口返回json数据含有特殊符号(双引号),当转换成json对象总是报错,
json字符格式如下
{
"BOXINFO":[
{
"ITEM_ID":"",
"ITEM_NAME":"抗链球菌溶血素"O"(ASO)测定试剂盒(胶乳免)",
"QTY":,
"NOTES":"厂牌(河北恒利集团制药股份有限公司)批号(1172292)"
},
{
"ITEM_ID":"",
"ITEM_NAME":"茵栀黄颗粒",
"QTY":,
"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 = ; 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数据中属性值的英文双引号改成中文的)
还有另外一种方法是将json的特殊字符前加上转义字符(\),如:
{
"BOXINFO":[
{
"ITEM_ID":"",
"ITEM_NAME":"抗链球菌溶血素\"O\"(ASO)测定试剂盒(胶乳免)",
"QTY":,
"NOTES":"厂牌(河北恒利集团制药股份有限公司)批号(1172292)"
},
{
"ITEM_ID":"",
"ITEM_NAME":"茵栀黄颗粒",
"QTY":,
"NOTES":"厂牌(鲁南厚普制药有限公司)批号(00917063)"
}
]
}
转义后结果
参考来源地址:
https://blog.csdn.net/ymlkl/article/details/41959297?utm_source=blogxgwz0
C#调用接口返回json数据中含有双引号 或其他非法字符的解决办法的更多相关文章
- **后台怎么处理JSON数据中含有双引号?
http://bbs.csdn.net/topics/390578406?page=1 注意是后台,不是用js另外我这个json是直接取得别人的传过来的字符串,不是我自己拼写的,所以我自己不能做到转义 ...
- 如何处理JSON数据中含有双引号
{"quality": "B"A"D"} 实际上要 value.replace("\"","\\\& ...
- java通过url调用远程接口返回json数据
java通过url调用远程接口返回json数据,有用户名和密码验证, 转自 https://blog.csdn.net/wanglong1990421/article/details/78815856 ...
- SVN版本冲突中 Files 的值“ < < < < < < < .mine”无效路径中具有非法字符的解决办法
.NET 中 SVN版本冲突中 Files 的值“ < < < < < < < .mine”无效路径中具有非法字符的解决办法: 一. 1.将项目逐个进行编译, ...
- Java之Hashmap中value为null,则返回json数据中key不存在
前两天干活儿的时候,将实例对象放在Hashmap中返回给前端: ArtificialEntity artificialEntity = artificialService.getInfoById(id ...
- 服务器返回的json数据中含有null的处理方法
个人博客:http://guohuaden.com/2017/03/06/json-dataNull/因为有遇到过类似情况,所以就想到了一些解决方法,并且实践了一下,这里简单的做个记录. 注:有看到不 ...
- ASP.net jQuery调用webservice返回json数据的一些问题
之前寒假时,试着使用jQuery写了几个异步请求demo, 但是那样是使用的webform普通页面,一般应该是用 webservice 居多. 最近写后台管理时,想用异步来实现一些信息的展示和修改, ...
- ASP.NET WEB API 返回JSON 出现2个双引号问题
前言 在使用ASP.NET WEB API时,我想在某个方法返回JSON格式的数据,于是首先想到的就是手动构建JSON字符串,如:"{\"result\" ...
- jQuery调用WebService返回JSON数据
相信大家都比较了解JSON格式的数据对于ajax的方便,不了解的可以从网上找一下这方面的资料来看一下,这里就不多说了,不清楚的可以在网上查一下,这里只说一下因为参数设置不当引起的取不到返回值的问题. ...
随机推荐
- NET Core 指令启动
ASP.NET Core 是新一代的 ASP.NET,早期称为 ASP.NET vNext,并且在推出初期命名为ASP.NET 5,但随着 .NET Core 的成熟,以及 ASP.NET 5的命名会 ...
- pl/sql编译存储过程卡住的解决方法
oracle编译存过卡住处理: 问题描述: 在编译某个存过时,由于没提交或断网或者test没停止又重新编译,导致编译存过一直卡死 问题分析: 存过或某张表被锁 问题处理: 1.查看存过是否锁住,loc ...
- L1-033 出生年
不难,代码: #include <queue> #include <functional> #include <stdio.h> #include <stri ...
- 【转】VC 利用DLL共享区间在进程间共享数据及进程间广播消息
1.http://blog.csdn.net/morewindows/article/details/6702342 在进程间共享数据有很多种方法,剪贴板,映射文件等都可以实现,这里介绍用DLL的共享 ...
- [osg]OSG使用更新回调来更改模型
使用回调类实现对场景图形节点的更新.本节将讲解如何使用回调来实现在每帧的更新遍历(update traversal)中进行节点的更新. 回调概览 用户可以使用回调来实现与场景 ...
- DOM结构及优化
1.DOM树中三种常见的DOM节点: 1>元素节点:上图中<a>,<h1>等都是元素节点,即标签 2>文本节点:向用户展示的内容,如...中的"文档标题& ...
- 《剑指offer》第五十三题(数字在排序数组中出现的次数)
// 面试题53(一):数字在排序数组中出现的次数 // 题目:统计一个数字在排序数组中出现的次数.例如输入排序数组{1, 2, 3, 3, // 3, 3, 4, 5}和数字3,由于3在这个数组中出 ...
- Node.js 常用命令
1. 查看node版本 node --version 2. 查看npm 版本,检查npm 是否正确安装. npm -v 3. 安装cnpm (国内淘宝镜像源),主要用于某些包或命令程序下载不下来的情况 ...
- PySpark笔记
spark源码位置:https://github.com/apache/spark Spark Core核心RDD及编程 什么是RDD:1.是一个抽象类不能直接使用,在子类中实现抽象方法是一个抽象类不 ...
- 01-python基础知识
1.这两个参数是什么意思:*args,**kwargs?我们为什么要使用它们? 答案 如果我们不确定要往函数中传入多少个参数,或者我们想往函数中以列表和元组的形式传参数时,那就使要用*args:如果我 ...