正则表达式:  

正则表达式主要的参考文章: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. PHP小题目 求 1*3+5*7+…+97*99的值

    下面是另外两种比较基础的方法实现的代码

  2. Codeforces 15B Laser

    题目链接:点击打开链接 #include<stdio.h> #include<iostream> #include<string.h> #include<se ...

  3. shell 获取网关 以及修改ip 启用网卡

    shell 获取网关 以及修改ip 启用网卡 #!/bin/bash #autho freefei #script is a init computer eth #data 2014 10 09 19 ...

  4. UVA 10465 Homer Simpson(dp + 完全背包)

    Problem C: Homer Simpson Time Limit: 3 seconds Memory Limit: 32 MB Homer Simpson, a very smart guy, ...

  5. OC-KVO简介

    一,概述 KVO,即:Key-Value Observing,它提供一种机制,当指定的对象的属性被修改后,则对象就会接受到通知.简单的说就是每次指定的被观察的对象的属性被修改后,KVO就会自动通知相应 ...

  6. Java——(八)Map之LinkedHashMap、TreeMap、EnumMap实现类

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 1.LinkedHashMap实现类 LinkedHashMap需要维护意识的插入顺序,因此性能 ...

  7. Java——(七)Map之HashMap和Hashtable实现类

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- Map Map用于具有映射关系的数据,因此Map集合里保存着两组值,一组值用于保存Map里的ke ...

  8. linux中history命令使用与配置

    history中设置显示命令的执行时间 vi /root/.bashrc HISTTIMEFORMAT="%Y-%M-%D %H:%M:%S" export HISTTIMEFOR ...

  9. 【Android】android镜像翻转

    Android镜像翻转指的是将屏幕进行水平的翻转,达到所有内容显示都会反向的效果,就像是在镜子中看到的界面一样.这种应用的使用场景相对比较受限,主要用在一些需要使用Android手机界面进行镜面投影的 ...

  10. gulp完成javascript压缩合并,css压缩

    最近需要对项目进行优化,主要是对js的压缩合并和css文件的压缩,查找相关资料之后发现gulp可以实现相关的功能,特此分享一下使用心得. 1.安装gulp gulp是基于Node.js的前端构建工具. ...