博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# 正则表达式、Json
阅读量:4616 次
发布时间:2019-06-09

本文共 1984 字,大约阅读时间需要 6 分钟。

正则表达式:  

正则表达式主要的参考文章:。

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

Json对象:

{
"_A":10, "_B":"123", "__cname":"Object","_ListC":[{
"_BaseA":10, "_BaseB":"yes","__cname":"BaseObject"}, {
"_BaseA":20, "_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 的。

待验证噢。

推荐分享:

 

转载于:https://www.cnblogs.com/Daniel-Liang/p/5950507.html

你可能感兴趣的文章
安装ejabberd2并配置MySQL为其数据库
查看>>
蛇形填数(算法竞赛入门经典)
查看>>
angular repeat
查看>>
Activiti 工作流会签开发设计思路
查看>>
【leecode】宝石与石头
查看>>
Ubuntu16.04系统安装后的10件真正必做之事 | 原创
查看>>
CF862B Mahmoud and Ehab and the bipartiteness 二分图染色判定
查看>>
android 图片圆角化控件
查看>>
不错的题目
查看>>
随我的记
查看>>
NOIP2009提高组解题报告【2017.3.25更新】
查看>>
maven中的mirrors
查看>>
java第三次作业
查看>>
HP Jack介绍
查看>>
敏捷软件开发(3)---COMMAND 模式 & Active Object 模式
查看>>
常量与运算
查看>>
Python 04--迭代器、装饰器、软件开发规范
查看>>
poj 1062 昂贵的聘礼 解题报告
查看>>
java 集合
查看>>
lnmp 安装yarn
查看>>