C#在Json反序列化中处理键的特殊字符
假设有如下Json 数据:
1.{2."id": 1,3."@value":"this a @",4."$p":"my name a $"5.}通常情况下,在Json反序列化时,将Json映射到序列化的类,无需指定其名称。如
1.publicJsonTest{2.publicstringid{get;set;}3.}在反序列化时会自动将Json中的ID与类中的ID对应。但是当键有特殊字符时,如 $ , @ 等,无法定义类的属性中含有特殊字符,因此,需要使用 [DataContract] 和 [DataMember] 来定义数据协定。01.[DataContract]02.publicclassjtest03.{04.[DataMember(Order = 0)]05.publicintid {get;set; }06.[DataMember(Order = 1, Name ="@value")]07.publicstringvalue {get;set; }08.[DataMember(Order = 2, Name ="$p")]09.publicstring_p {get;set; }10.}反序列化1.jtest test = serializer.ReadObject(newMemoryStream(Encoding.UTF8.GetBytes(jsonStr)))asjtest;2.Console.WriteLine( test.value );序列化
1.var stream =newMemoryStream();2.serializer.WriteObject(stream, test);3.byte[] dataBytes =newbyte[stream.Length];4.stream.Position = 0;5.stream.Read(dataBytes, 0, (int)stream.Length);6.stringdataString = Encoding.UTF8.GetString(dataBytes);完整测试类:01.usingSystem;02.usingSystem.Text;03.usingSystem.Runtime.Serialization;04.usingSystem.Runtime.Serialization.Json;05.usingSystem.IO;06.07.08.namespaceConsoleApplication109.{10.classProgram11.{12.staticvoidMain(string[] args)13.{14.stringjsonStr ="{\"id\":1,\"@value\":\"this a @\",\"$p\":\"my name a $\"}";15.DataContractJsonSerializer serializer =newDataContractJsonSerializer(typeof(jtest));16.17.//反序列化18.jtest test = serializer.ReadObject(newMemoryStream(Encoding.UTF8.GetBytes(jsonStr)))asjtest;19.Console.WriteLine( test.value );20.21.//序列化22.var stream =newMemoryStream();23.serializer.WriteObject(stream, test);24.byte[] dataBytes =newbyte[stream.Length];25.stream.Position = 0;26.stream.Read(dataBytes, 0, (int)stream.Length);27.stringdataString = Encoding.UTF8.GetString(dataBytes);28.29.Console.WriteLine(dataString);30.Console.ReadKey();31.}32.}33.[DataContract]34.publicclassjtest35.{36.[DataMember(Order = 0)]37.publicintid {get;set; }38.[DataMember(Order = 1, Name ="@value")]39.publicstringvalue {get;set; }40.[DataMember(Order = 2, Name ="$p")]41.publicstring_p {get;set; }42.}43.}
C#在Json反序列化中处理键的特殊字符的更多相关文章
- requests(二): json请求中固定键名顺序&消除键和值之间的空格
继上一篇requests发送json请求的文章后,实际工作中遇到了以下2种情况. 1:服务端要求json字符串,键名的顺序固定 2.服务端对于接收到的json数据中,若key和value之间有空格, ...
- js 替换json对象中的键名
js 替换json对象中的键名 CreateTime--2018年3月30日15:38:50 Author:Marydon 情景描述: 有个json数组,现在需要将json对象中的key替换掉,值 ...
- 修改json数据中key(键值)
//方法一:修改JSONObject的键 public static JSONObject changeJsonObj(JSONObject jsonObj,Map<String, String ...
- json - 内容中需处理的特殊字符(转)
转 http://blog.csdn.net/icewizardry/article/details/17265267 protected string RemoveIllegalCharacterF ...
- json包中的Marshal&Unmarshal 文档译本
Marshal func Marshal(v interface{})([]byte, error) Marshal returns the JSON encoding of v. Marshal返回 ...
- C# json反序列化 对象中嵌套数组 (转载) 可能会导致循环或多重级联路径。请指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。
C# json反序列化 对象中嵌套数组 (转载) 看图: 这里可以看到是二层嵌套!!使用C#如何实现?? 思路:使用list集合实现 → 建立类 → list集合 → 微软的 Newtonso ...
- c# 通过json.net中的JsonConverter进行自定义序列化与反序列化
https://www.cnblogs.com/yijiayi/p/10051284.html 相信大家在工作中会经常遇见对json进行序列化与反序列化吧,但通常的序列化与反序列化中的json结构与c ...
- 利用FastJson,拼接复杂嵌套json数据&&直接从json字符串中(不依赖实体类)解析出键值对
1.拼接复杂嵌套json FastJson工具包中有两主要的类: JSONObject和JSONArray ,前者表示json对象,后者表示json数组.他们两者都能添加Object类型的对象,但是J ...
- for in 循环获取json中的键(key)与值(value)
一 .for in 循环 1.获取json中的键(key)与值(value): var data = {name:'张三',age:'20岁',sex:'男'}; for (var a in data ...
随机推荐
- 转:Web网站性能测试分析及调优实例
1.背景 前段时间,性能测试团队经历了一个规模较大的门户网站的性能优化工作,该网站的开发和合作涉及多个组织和部门,而且网站的重要性不言而喻,同时上线时间非常紧迫,关注度也很高,所以对于整个团队的压力也 ...
- HDU 1248 寒冰王座
完全背包 #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> ...
- L2-012. 关于堆的判断
L2-012. 关于堆的判断 题目链接:https://www.patest.cn/contests/gplt/L2-012 终于ac了,简直要哭.题目还是很简单的,不过很多坑: 1.寻找x下标时,有 ...
- Python编码问题整理【转】
认识常见编码 GB2312是中国规定的汉字编码,也可以说是简体中文的字符集编码 GBK 是 GB2312的扩展 ,除了兼容GB2312外,它还能显示繁体中文,还有日文的假名 cp936:中文本地系统是 ...
- 1.rs.first()、rs.last()、rs.next()、rs.getRow()
rs.first()获取第一条数据的信息rs.last()获取最后一条数据的信息rs.next()获取下一条数据的信息rs.getRow()获取当前信息的行数 import java.sql.*; p ...
- iOS开发瀑布流的实现
//自定义布局,继承于UICollectionViewLayout #import <UIKit/UIKit.h> @class WaterFlowLayout; @protocol W ...
- JavaScript的DOM(文档对象)基础语法总结1
---恢复内容开始--- 前言:HTML文档可以说由节点构成的集合,DOM节点有: 1). 元素节点:上图中<html>.<body>.<p>等都是元素节点,即标签 ...
- hdu_5873_Football Games(xjb搞)
题目链接:hdu_5873_Football Games 题意: 有n个队,每个队都会给其他队打一场,赢一场得2分,平局得一分,输了不得分,然后给你全部比赛结束后的得分,问你是否有假分 题解: 可以知 ...
- C++ namespace功能总结
案例背景:你写了一些代码,其中有一个函数名为xyz(),同时另一个可用库里也有一个同名的函数xyz(), 编译器没有办法知道你指的是哪个版本的xyz(). 解决办法:A namespace is de ...
- 三、ASP.NET MVC Controller 控制器(二:IController控制器的创建过程)
阅读目录: 1.开篇介绍 2.ASP.NETMVC IControllerFactory 控制器工厂接口 3.ASP.NETMVC DefaultControllerFactory 默认控制器工厂 4 ...