如何去掉Json字符串中反斜杠
做项目的时候,遇到了这样的问题,前台传来的Json字符串在实体类中不对应(无法转换为实体类),而且传来的数据项是跟着数据库中的表的变动而变动的(不能重写实体类)。
前台Json字符串为:
string s1 ="[{\"ID\":\"99d2a341-ea2e-4f04-b4f4-623153d64336\",\"Name\":\"王五\",\"TotalScores\":80,\"工作效率\":\"B\",\"职业道德\":\"B\",\"业务能力\":\"A\",\"链接自律\":\"B\",\"工作成绩\":\"B\"},{\"ID\":\"728f72ac-473b-4bde-bf83-7ed93d3fd9e6\",\"Name\":\"李四\",\"TotalScores\":80,\"工作效率\":\"B\",\"职业道德\":\"B\",\"业务能力\":\"A\",\"链接自律\":\"B\",\"工作成绩\":\"B\"},{\"ID\":\"29c80443-d0ac-414c-91b5-acd5e69e28f2\",\"Name\":\"刘七\",\"TotalScores\":80,\"工作效率\":\"B\",\"职业道德\":\"B\",\"业务能力\":\"A\",\"链接自律\":\"B\",\"工作成绩\":\"B\"}]";
可以看到其实在微软中将“\“”作为双引号用的,思路是这样的:
1、去掉“\“”
代码实现:
strings11=s1.Replace("\"","");
2、去掉”[]“
代码实现:
string s22 =s11.Replace("[","");
string s33 =s22.Replace("]", "");
这是时候我们得到的s33是这样的:
s33="{ID:99d2a341-ea2e-4f04-b4f4-623153d64336,Name:王五,TotalScores:80,工作效率:B,职业道德:B,业务能力:A,链接自律:B,工作成绩:B},{ID:728f72ac-473b-4bde-bf83-7ed93d3fd9e6,Name:李四,TotalScores:80,工作效率:B,职业道德:B,业务能力:A,链接自律:B,工作成绩:B},{ID:29c80443-d0ac-414c-91b5-acd5e69e28f2,Name:刘七,TotalScores:80,工作效率:B,职业道德:B,业务能力:A,链接自律:B,工作成绩:B}"
3、将”},{“调换为”}“,去掉空值
代码实现:
string s44 =s33.Replace("},{","}");
s44="{ID:99d2a341-ea2e-4f04-b4f4-623153d64336,Name:王五,TotalScores:80,工作效率:B,职业道德:B,业务能力:A,链接自律:B,工作成绩:B}ID:728f72ac-473b-4bde-bf83-7ed93d3fd9e6,Name:李四,TotalScores:80,工作效率:B,职业道德:B,业务能力:A,链接自律:B,工作成绩:B}ID:29c80443-d0ac-414c-91b5-acd5e69e28f2,Name:刘七,TotalScores:80,工作效率:B,职业道德:B,业务能力:A,链接自律:B,工作成绩:B}"
string[] s55s =s44.Split(new Char[] { '}', '{' }, StringSplitOptions.RemoveEmptyEntries);
s55s是得到的”ID:99d2a341-ea2e-4f04-b4f4-623153d64336,Name:王五,...“将得到的结果放在字典中:
- <span style="font-size:18px;"><span style="font-size:18px;"> for (int i = 0; i < updatedEdit.Length; i++) {
- //string[] detailevaluationinfo = updatedEdit[i].Split(',');
- string pat = @"(?<key>[^,:\s]*):(?<value>[^,:\s]*)";
- //一组之间的数据拿出来
- //for (int j = 0; j < detailevaluationinfo.Length; j++) {
- MatchCollection matches = Regex.Matches(updatedEdit[i], pat);
- Dictionary<string, string> dict = new Dictionary<string, string>();
- foreach (Match m in matches)
- {
- if (dict.ContainsKey(m.Groups["key"].Value)) continue;//不能重复啊
- dict.Add(m.Groups["key"].Value, m.Groups["value"].Value);
- }
- }</span></span>
<span style="font-size:18px;"><span style="font-size:18px;"> for (int i = 0; i < updatedEdit.Length; i++) {
//string[] detailevaluationinfo = updatedEdit[i].Split(',');
string pat = @"(?<key>[^,:\s]*):(?<value>[^,:\s]*)";
//一组之间的数据拿出来
//for (int j = 0; j < detailevaluationinfo.Length; j++) {
MatchCollection matches = Regex.Matches(updatedEdit[i], pat);
Dictionary<string, string> dict = new Dictionary<string, string>();
foreach (Match m in matches)
{
if (dict.ContainsKey(m.Groups["key"].Value)) continue;//不能重复啊
dict.Add(m.Groups["key"].Value, m.Groups["value"].Value);
}
}</span></span>
这样就可以将Json字符串截取出来。
完整代码:
- <span style="font-size:18px;"> private static void TestRegex20()
- {
- string s1 = "[{\"ID\":\"99d2a341-ea2e-4f04-b4f4-623153d64336\",\"Name\":\"王五\",\"TotalScores\":80,\"工作效率\":\"B\",\"职业道德\":\"B\",\"业务能力\":\"A\",\"链接自律\":\"B\",\"工作成绩\":\"B\"},{\"ID\":\"728f72ac-473b-4bde-bf83-7ed93d3fd9e6\",\"Name\":\"李四\",\"TotalScores\":80,\"工作效率\":\"B\",\"职业道德\":\"B\",\"业务能力\":\"A\",\"链接自律\":\"B\",\"工作成绩\":\"B\"},{\"ID\":\"29c80443-d0ac-414c-91b5-acd5e69e28f2\",\"Name\":\"刘七\",\"TotalScores\":80,\"工作效率\":\"B\",\"职业道德\":\"B\",\"业务能力\":\"A\",\"链接自律\":\"B\",\"工作成绩\":\"B\"}]";
- //去掉反义字符串
- string s11 = s1.Replace("\"", "");
- string s22 = s11.Replace("[", "");
- string s33 = s22.Replace("]", "");
- //s33——"{ID:99d2a341-ea2e-4f04-b4f4-623153d64336,Name:王五,TotalScores:80,工作效率:B,职业道德:B,业务能力:A,链接自律:B,工作成绩:B},{ID:728f72ac-473b-4bde-bf83-7ed93d3fd9e6,Name:李四,TotalScores:80,工作效率:B,职业道德:B,业务能力:A,链接自律:B,工作成绩:B},{ID:29c80443-d0ac-414c-91b5-acd5e69e28f2,Name:刘七,TotalScores:80,工作效率:B,职业道德:B,业务能力:A,链接自律:B,工作成绩:B}"
- string s44 = s33.Replace("},{", "}");
- //s44——"{ID:99d2a341-ea2e-4f04-b4f4-623153d64336,Name:王五,TotalScores:80,工作效率:B,职业道德:B,业务能力:A,链接自律:B,工作成绩:B}ID:728f72ac-473b-4bde-bf83-7ed93d3fd9e6,Name:李四,TotalScores:80,工作效率:B,职业道德:B,业务能力:A,链接自律:B,工作成绩:B}ID:29c80443-d0ac-414c-91b5-acd5e69e28f2,Name:刘七,TotalScores:80,工作效率:B,职业道德:B,业务能力:A,链接自律:B,工作成绩:B}"
- string[] s55s = s44.Split(new Char[] { '}', '{' }, StringSplitOptions.RemoveEmptyEntries);
- for (int i = 0; i < s55s.Length; i++)
- {
- //string[] detailevaluationinfo = updatedEdit[i].Split(',');
- string pat = @"(?<key>[^,:\s]*):(?<value>[^,:\s]*)";
- //一组之间的数据拿出来
- //for (int j = 0; j < detailevaluationinfo.Length; j++) {
- MatchCollection matches = Regex.Matches(s55s[i], pat);
- Dictionary<string, string> dict = new Dictionary<string, string>();
- foreach (Match m in matches)
- {
- if (dict.ContainsKey(m.Groups["key"].Value)) continue;//不能重复啊
- dict.Add(m.Groups["key"].Value, m.Groups["value"].Value);
- }
- }
- }</span>
<span style="font-size:18px;"> private static void TestRegex20()
{
string s1 = "[{\"ID\":\"99d2a341-ea2e-4f04-b4f4-623153d64336\",\"Name\":\"王五\",\"TotalScores\":80,\"工作效率\":\"B\",\"职业道德\":\"B\",\"业务能力\":\"A\",\"链接自律\":\"B\",\"工作成绩\":\"B\"},{\"ID\":\"728f72ac-473b-4bde-bf83-7ed93d3fd9e6\",\"Name\":\"李四\",\"TotalScores\":80,\"工作效率\":\"B\",\"职业道德\":\"B\",\"业务能力\":\"A\",\"链接自律\":\"B\",\"工作成绩\":\"B\"},{\"ID\":\"29c80443-d0ac-414c-91b5-acd5e69e28f2\",\"Name\":\"刘七\",\"TotalScores\":80,\"工作效率\":\"B\",\"职业道德\":\"B\",\"业务能力\":\"A\",\"链接自律\":\"B\",\"工作成绩\":\"B\"}]";//去掉反义字符串
string s11 = s1.Replace("\"", "");
string s22 = s11.Replace("[", "");
string s33 = s22.Replace("]", "");
也可以采用"replace("\\", "")"用于执行多次"toString()"方法产生多余的斜杠
//s33——"{ID:99d2a341-ea2e-4f04-b4f4-623153d64336,Name:王五,TotalScores:80,工作效率:B,职业道德:B,业务能力:A,链接自律:B,工作成绩:B},{ID:728f72ac-473b-4bde-bf83-7ed93d3fd9e6,Name:李四,TotalScores:80,工作效率:B,职业道德:B,业务能力:A,链接自律:B,工作成绩:B},{ID:29c80443-d0ac-414c-91b5-acd5e69e28f2,Name:刘七,TotalScores:80,工作效率:B,职业道德:B,业务能力:A,链接自律:B,工作成绩:B}" string s44 = s33.Replace("},{", "}");
//s44——"{ID:99d2a341-ea2e-4f04-b4f4-623153d64336,Name:王五,TotalScores:80,工作效率:B,职业道德:B,业务能力:A,链接自律:B,工作成绩:B}ID:728f72ac-473b-4bde-bf83-7ed93d3fd9e6,Name:李四,TotalScores:80,工作效率:B,职业道德:B,业务能力:A,链接自律:B,工作成绩:B}ID:29c80443-d0ac-414c-91b5-acd5e69e28f2,Name:刘七,TotalScores:80,工作效率:B,职业道德:B,业务能力:A,链接自律:B,工作成绩:B}" string[] s55s = s44.Split(new Char[] { '}', '{' }, StringSplitOptions.RemoveEmptyEntries); for (int i = 0; i < s55s.Length; i++)
{
//string[] detailevaluationinfo = updatedEdit[i].Split(',');
string pat = @"(?<key>[^,:\s]*):(?<value>[^,:\s]*)";
//一组之间的数据拿出来
//for (int j = 0; j < detailevaluationinfo.Length; j++) {
MatchCollection matches = Regex.Matches(s55s[i], pat);
Dictionary<string, string> dict = new Dictionary<string, string>();
foreach (Match m in matches)
{
if (dict.ContainsKey(m.Groups["key"].Value)) continue;//不能重复啊
dict.Add(m.Groups["key"].Value, m.Groups["value"].Value);
}
}
}</span></pre><br>
如何去掉Json字符串中反斜杠的更多相关文章
- 微信小程序session_key解析中反斜杠问题处理 Java解析
Java服务端微信小程序解密用户信息.手机号需用到session_key也需要decode,以下是官方描述: 加密数据解密算法 接口如果涉及敏感数据(如wx.getUserInfo当中的 openId ...
- python 正则表达式中反斜杠(\)的麻烦和陷阱
这里是一点小心得:由于下面两个原因,在正则表达式中使用反斜杠就会产生了一个双重转换的问题. (1).python自身处理字符串时,反斜杠是用于转义字符 (2).正则表达式也使用反斜杠来转义字符 ...
- RestTemplate接收HashMap变为LinkedHashMap,RestTemplate接收数据后转成json数据出现反斜杠
使用postForObject方法远程调用接口,正常会返回List<HashMap>,然而实际上却返回List<LinkedHashMap>,同时将此数据进行json转换,变成 ...
- JS中反斜杠和单双引号的配合使用效果
<div id="tag"></div> <div id="tag1"></div> <div id=&q ...
- C#去掉JSON字符串中的最后一个数字
这个问题总结起来就是去掉字符串中的最后一个"," 字符串:string s = "1,2,3,4,5," 目标:删除最后一个 "," 方法: ...
- C#基础(一)——C#中反斜杠/n与/r的区别
最近在公司实习的过程中,遇到了字符串换行的问题,百度了一下,发现字符串换行的问题还挺多,总结一下最基本的点,以防忘记. \n—>换行符(New Line),作用为换行符后面的字符串显示到“下一行 ...
- .NET WCF Return String 字符串有反斜杠的处理
应该是: {"Message":"Hello World"} 结果是:" {\"Message\":\"Hello Wo ...
- java 关于getProperty()方法中反斜杠问题
问: 在配置文件a.properties中有一行path=C:\test在java中getProperty("path")后,java把\t认为是一个字符TAB.怎样才能取到正确的 ...
- maven dependency:tree中反斜杠的含义
摘自:http://www.708luo.com/posts/2013/11/maven-dependency-slash-mark/ 一个mvn dependency:tree命令执行的输出如下: ...
随机推荐
- OpenCV代码提取:transpose函数的实现
OpenCV中的transpose函数实现图像转置,公式为: 目前fbc_cv库中也实现了transpose函数,支持多通道,uchar和float两种数据类型,经测试,与OpenCV3.1结果完全一 ...
- 2457: [BeiJing2011]双端队列
2457: [BeiJing2011]双端队列 链接 很奇妙的转化. 题目要求最后的所有序列也是有序的,所以可以求出最后的序列(即排序后的序列),然后分成许多份,要求每一份都是一个双端序列,求最少分成 ...
- 转MySQL详解--索引
写在前面:索引对查询的速度有着至关重要的影响,理解索引也是进行数据库性能调优的起点.考虑如下情况,假设数据库中一个表有10^6条记录,DBMS的页面大小为4K,并存储100条记录.如果没有索引,查询将 ...
- Android中通过拨号调起应用的实现方式及特殊情况处理
Android中有时我们会有这样的需求:通过拨号调起我们的程序.这个需求如何实现呢? 思路当然是在我们的应用中实现一个广播接收器(BroadcastReceiver),对打电话时系统发出的广播进行拦截 ...
- python学习总结----异常处理
相关概念 - 错误:程序运行之前的语法错误,如:关键字.缩进不齐.括号不成对. - 异常:在程序运行过程中出现的问题,如:除数为0.对象属性不存在等. 异常处理 - 说明:异常处理可以理解为特殊的流程 ...
- KVM WEB管理工具——WebVirtMgr(二)日常配置
配置宿主机 1.登录WebVirtMgr管理平台 2.添加宿主机 选择首页的WebVirtMgr -->Addd Connection 选择“SSH链接“,设置Label,IP,用户 注意:La ...
- 在线算法&离线算法
[在线算法] 定义:指用户每输入一个查询便马上处理一个查询.该算法一般用较长的时间做预处理,待信息充足以后便可以用较少的时间回答每个查询. 常见在线算法:ST算法 [离线算法] 定义:
- chromium源码阅读
linux下chromium的入口函数在文件:src/chrome/app/chrome_exe_main_aura.cc 中 int main(int argc, const char** argv ...
- lintcode-64-合并排序数组 II
64-合并排序数组 II 合并两个排序的整数数组A和B变成一个新的数组. 注意事项 你可以假设A具有足够的空间(A数组的大小大于或等于m+n)去添加B中的元素. 样例 给出 A = [1, 2, 3, ...
- 基于SDN的IP RAN网络虚拟化技术
http://www.zte.com.cn/cndata/magazine/zte_technologies/2014/2014_4/magazine/201404/t20140421_422858. ...