正则表达式:  

正则表达式主要的参考文章: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. ICSharpCode.SharpZipLib压缩解压

    一.使用ICSharpCode.SharpZipLib.dll: 下载地址 http://www.icsharpcode.net/OpenSource/SharpZipLib/Download.asp ...

  2. 自定义控件之-----progressBar

    写了那一年多代码都没有认认真真写过自定义控件,最近看到网易新闻里面的加载图标如图 感觉很有意思,就准备自己写个玩玩.在api里面脑补了一些canvas的姿势,就上了,效果如下. 说实话真心不难,自定义 ...

  3. jQuery Animation实现CSS3动画

    jQuery Animation的工作原理是通过将元素的CSS样式从一个状态改变为另一个状态.CSS属性值是逐渐改变的,这样就可以创建动画效果.只有数字值可创建动画(比如 "margin:3 ...

  4. Android 微信SDK分享功能中的最全过程步骤分析

    在前面有一章已经分析过怎么用官方的demo分享微信信息了,在这里我就不再多说,其中关于在自己应用分享说得很简单,本文作者也是经过一番折腾才弄成功,为了以后让大家都少走弯路,决定在这里从头到尾介绍怎么在 ...

  5. [RxJS] Transformation operator: map and mapTo

    We made our first operator called multiplyBy, which looks a bit useful, but in practice we don't nee ...

  6. [CodeForce]358D Dima and Hares

    有N<3000只宠物要喂,每次只能喂一只,每喂一只宠物,宠物的满足度取决于: 1 紧靠的两个邻居都没喂,a[i] 2 邻居中有一个喂过了,b[i] 3 两个邻居都喂过了,c[i] 把所有宠物喂一 ...

  7. hadoop2.2 伪分布式环境

    在安装JDK之前,请确认系统是32还是64,根据系统版本,选择JDK版本.Hadoop版本 下面是以在CentOS-6.5-x86_64系统上安装为例 安装前准备 在"/usr"下 ...

  8. Android性能优化典范 - 第5季

    这是Android性能优化典范第5季的课程学习笔记,拖拖拉拉很久,记录分享给大家,请多多包涵担待指正!文章共10个段落,涉及的内容有:多线程并发的性能问题,介绍了AsyncTask,HandlerTh ...

  9. c# 的导入功能SqlBulkCopy

    private static void DataTableToSQLServer( DataTable dt) { string connectionString = GetConnectionStr ...

  10. 当升级新版本的时候,从新加载新版本的js的方法

    <script src="../Script/SmcScript.js?version='<%=Smc20.Web.WebForm.Public.WebConst.WEBJSCA ...