正则表达式:  

正则表达式主要的参考文章:http://www.cnblogs.com/stg609/archive/2009/06/03/1492709.html#anchorD

需求:将cocos2dx客户端上传的Json对象转换为C#对象。

Json对象:

{"_A":, "_B":"", "__cname":"Object","_ListC":[{"_BaseA":, "_BaseB":"yes","__cname":"BaseObject"}, {"_BaseA":, "_BaseB":"no","__cname":"BaseObject"}]}

服务端不需要"__cname"属性。

转换代码:

        private string AdjustInputJson(string input)
{
string pattern1 = "\"__cname\":\".*?\""; //消除cocos客户端的__cname属性
string pattern2 = @",\s?,"; //,, 转 ,
string pattern3 = @"{\s?,"; //{, 转 {
string pattern4 = @",\s?}"; //,} 转 } Regex r1 = new Regex(pattern1);
Regex r2 = new Regex(pattern2);
Regex r3 = new Regex(pattern3);
Regex r4 = new Regex(pattern4); Match m1 = r1.Match(input);
var tmpString1 = r1.Replace(input, ""); Match m2 = r2.Match(tmpString1);
var tmpString2 = r2.Replace(tmpString1, ","); Match m3 = r3.Match(tmpString2);
var tmpString3 = r3.Replace(tmpString2, "{"); Match m4 = r4.Match(tmpString3);
var tmpString4 = r4.Replace(tmpString3, "}"); return tmpString4;
}

其他代码 - 单个适配获取:

                string pattern = "\"__cname\":\".*?\"";
Regex r = new Regex(pattern);
Match m = r.Match(content);
if(m.Success)
{
Console.WriteLine(m.Value);
}

其他代码 - 多个适配获取:

                string pattern = "\"__cname\":\".*?\"";
var resGroup = Regex.Matches(content, pattern);
foreach(var match in resGroup)
{
Console.WriteLine(match.ToString());
}

Json转换:

C#一般用 Newtonsoft.Json。

问题在于对 List 的转换:之前一直以为要将其反序列化为 Scut 的 CacheList 的,需要手动修改 Json 串,为其增加 CacheList 的私有变量 “_List”,最后发现不用。

原因应该在于 Newtonsoft.Json 的序列/反序列化,针对的是 IList 这个基类,而 CacheList 是有继承 IList 的。

待验证噢。

推荐分享:http://www.cnblogs.com/zxx193/p/3664562.html

C# 正则表达式、Json的更多相关文章

  1. url解析

    window.onload=function(){ var url="http://www.qq.com/index.html?key1=1&key2=2&key3=3&qu ...

  2. Jmeter简单回顾

    之前公众号推文一上手就分享如何测接口, 其实忽略了一些概念性的东西, 今天来给大家拾遗补缺, 做个回顾吧. 一. JMeter介绍 jmeter能做什么,来自官网的解释: Ability to loa ...

  3. cookie和sessionStorage 、localStorage 对比

    相同点:都存储在客户端 不同点:1.存储大小 cookie数据大小不能超过4k. sessionStorage和localStorage 虽然也有存储大小的限制,但比cookie大得多,可以达到5M或 ...

  4. 请描述一下 cookies,sessionStorage 和 localStorage 的区别

    原文:http://blog.csdn.net/lxcao/article/details/52809939 相同点:都存储在客户端不同点: 1.存储大小 cookie数据大小不能超过4k. sess ...

  5. 利用正则表达式,给Json字段加引号

    { scheme: [ { query: [ [{ id: 'stdNumber', title: "标准号", compareType: 2 }], [{ id: 'CnName ...

  6. os常用模块,json,pickle,shelve模块,正则表达式(实现运算符分离),logging模块,配置模块,路径叠加,哈希算法

    一.os常用模块 显示当前工作目录 print(os.getcwd()) 返回上一层目录 os.chdir("..") 创建文件包 os.makedirs('python2/bin ...

  7. python小练--使用正则表达式将json解析成dict

    练习python语法,自己实现了一个简单的解析json字符,存为dict字典对象. { "id":12, "name":"jack", &q ...

  8. Python的正则表达式与JSON

    Python的正则表达式需要导入re模块 菜鸟教程:http://www.runoob.com/python/python-reg-expressions.html 官方文档:https://docs ...

  9. Py修行路 python基础 (二十一)logging日志模块 json序列化 正则表达式(re)

    一.日志模块 两种配置方式:1.config函数 2.logger #1.config函数 不能输出到屏幕 #2.logger对象 (获取别人的信息,需要两个数据流:文件流和屏幕流需要将数据从两个数据 ...

随机推荐

  1. hud1856 并查集

    Problem Description Mr Wang wants some boys to help him with a project. Because the project is rathe ...

  2. python_list和tuple互转

    Python中,tuple和list均为内置类型, 以list作为参数将tuple类初始化,将返回tuple类型 tuple([1,2,3,4]) list->tuple 以tuple做为参数, ...

  3. MySQL查询过程中出现lost connection to mysql server during query 的解决办法

    window7 64位系统,MySQL5.7 问题:在使用shell进行数据表更新操作的过程,输入以下查询语句: ,; 被查询的表记录数达到500W条,在查询过程中出现如题目所示的问题,提示" ...

  4. 使用navicat 11 出现不能返回存储过程结果的问题

    问题: 使用navicat 11 调试存储过程,select返回结果,总是不能返回. 原因: 经google发现,navicat仅支持返回10个resultset,超过则不现实. 解决方法: 减少存储 ...

  5. SQL查询显示行号、随机查询、取指定行数据

    转自:walkingp 1.显示行号 如果数据没有删除的情况下主键与行号是一致的,但在删除某些数据,行号就与主键不一致了,这时需要查询行号就需要用新的方法,在SQL Server2005之前,需要使用 ...

  6. order by 自定义排序

    使用order by排序,有时候不是根据字符或数字顺序,而是根据实际要求排序. 例如有客户A,B,C,我希望排序结果是B,C,A,那么就要通过自定义的规则排序. 第一种方法,可以构造一张映射表,将客户 ...

  7. 如何消除inline-block产生的元素间空隙

    前端初学者可能都会碰到这个问题:有时候排版需要,会把一些块状元素的display属性设置为inline-block,如 <!-- HTML代码 --> <div class=&quo ...

  8. Android 开发笔记——通过 Intent 传递类对象

    Android中Intent传递类对象提供了两种方式一种是 通过实现Serializable接口传递对象,一种是通过实现Parcelable接口传递对象. 要求被传递的对象必须实现上述2种接口中的一种 ...

  9. angularjs 将带标签的内容解析后返回

    参考地址:http://okashii.lofter.com/post/1cba87e8_29e0fab 引入angular-sanitize.js文件 注入ngSanitize 页面数据绑定 ng- ...

  10. 解决kernel headers报错

    Make sure you have updated version $ sudo apt-get update Search for kernel version (optional) $ apt- ...