正则表达式:  

正则表达式主要的参考文章: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. 常用Dos命令笔记

    0x00 磁盘FAT32格式转NTFS convert e: /fs:ntfs Tips: 语法规则: Converts a FAT volume to NTFS. CONVERT volume /F ...

  2. 帮助招聘程序员的自动考试网站:Codility

    Automated tests of programming skills. Assessment of software developers. Recruitment software. Codi ...

  3. C标签

    关键字:JSTL标签.<c:choose>.<c:forEach>.<c:forTokens>.<c:if>.<c:import>.< ...

  4. cocos2d-x3.0 ListView

    .h #include "cocos2d.h" #include "cocos-ext.h" #include "ui/CocosGUI.h" ...

  5. C# 保存窗口为图片(保存纵断面图)

    源代码例如以下: #region 保存纵断面截图 private void button_save_Click(object sender , EventArgs e) { SaveFileDialo ...

  6. js原型继承

    原型链: Object(构造函数) object(类型(对象)) var o = {}; alert(typeof o); //结果是object alert(typeof Object); //结果 ...

  7. C++实现二叉树(转)

    /************************************************************************* 这是一个二叉查找树,实现了以下操作:插入结点.构造 ...

  8. MAC 环境下 初始化新的mysql root 密码

    mac 环境下初始化mysql的root密码 关掉mysql服务,打开系统设置最后的mysql,然后将mysql先关掉 生成一个文件命名mysql-init,文件中放入:一句话,这句话不同版本不一样, ...

  9. ubuntu14.04安装samba、vpn

    前言: VPN+SAMBA,能够让你将网上申请到的VPS目录映射成自己电脑的网络驱动器,方便开发. 一.安装samba 来源:http://jingyan.baidu.com/article/00a0 ...

  10. ASP.NET MVC 第五回 ActionResult的其它返回值

    我们上边所看到的Action都是return View();我们可以看作这个返回值用于解析一个aspx文件.而它的返回类型是ActionResult如 public ActionResult Inde ...