C#读写Json
C#处理json文件主要有两种方式:
(1)使用JavaScriptSerializer类,需要引入System.Web.Extension库,并添加下面两个引用:
using System.Web;
using System.Web.Script.Serialization;
主要代码如下所示:
public class Data
{
public int Id { get; set; }
// [ScriptIgnore]
public string Name { get; set; } public string GetName()
{
return Id.ToString() + Name;
}
} public class JsonPaserWeb
{
// Object->Json
public string Serialize(Data obj)
{
JavaScriptSerializer jsonSerializer = new JavaScriptSerializer();
string json = jsonSerializer.Serialize(obj);
return json;
} // Json->Object
public Data Deserialize(string json)
{
JavaScriptSerializer jsonSerializer = new JavaScriptSerializer();
//执行反序列化
Data obj = jsonSerializer.Deserialize<Data>(json);
return obj;
}
}
可以使用[ScriptIgnore]标记来让某个变量不参与序列化。
(2)使用DataContractJsonSerializer类,需要引入System.Runtime.Serialization库,并加入如下引用:
using System.Runtime.Serialization;
using System.Runtime.Serialization.Json;
示例代码如下所示:
[DataContract]
public class Data
{
[DataMember(Name = "id", Order = )]
public int Id; [DataMember(Name = "name", Order = )]
public string Name; [DataMember(Name = "child", Order = )]
public Child child = new Child(); [DataMember(Name = "list", Order = )]
public List<int> Ids = new List<int>(); [DataMember(Name = "dictionary", Order = )]
public Dictionary<int, Child> dic = new Dictionary<int, Child>(); [IgnoreDataMember]
public string Description = "This is a json data class"; } public class Child
{
public float Age;
public string FullName;
} class JsonParserRuntime
{
// Object->Json
public string Serialize(Data obj)
{
DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(obj.GetType());
string json = "";
using (MemoryStream stream = new MemoryStream())
{
jsonSerializer.WriteObject(stream, obj);
json = Encoding.UTF8.GetString(stream.ToArray());
}
return json;
} // Json->Object
public Data Deserialize(string json)
{
Data obj = null;
using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json)))
{
DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(Data));
obj = (Data)jsonSerializer.ReadObject(ms);
}
return obj;
}
}
使用[DataContract]标记的类,可以同时使用[DataMember(Name = "id", Order = 0)]标记来处理变量,也可以使用[IgnoreDataMember]标记来让某个变量不参与序列化。
C#读写Json的更多相关文章
- Android读写JSON格式的数据之JsonWriter和JsonReader
近期的好几个月都没有搞Android编程了,逐渐的都忘却了一些东西.近期打算找一份Android的工作,要继续拾起曾经的东西.公司月初搬家之后就一直没有网络,直到今日公司才有网络接入,各部门才開始办公 ...
- python 读写json文件(dump, load),以及对json格式的数据处理(dumps, loads)
JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. 1.json.dumps()和json.loads()是json ...
- 读写JSON作配置文件
个人不太喜欢XML,于是找了JSON来做配置,JSON虽然有很多引号,但这种key-value的形式,非常符合我的思维,就像是一个萝卜一个坑.最近在读写JSON文件,需要注意两个问题. 中文乱码: 直 ...
- iOS 如何用JSONKit读写JSON文件
如何用JSONKit读写JSON文件 分类: ios2013-04-20 12:46 510人阅读 评论(0) 收藏 举报 JSON文件格式简单,使用方便,值得一用. 目前已经有多个库支持Json文 ...
- Qt读写Json
Qt操作Json 1.QJsonDocument 1.详细说明 QJsonDocument类提供了读写JSON文档的方法. QJsonDocument是一个封装了完整JSON文档的类,可以从基于UTF ...
- python 读写 json文件
json的优势: 1. 数据体积方面. JSON相对于XML来讲,数据的体积小,传递的速度更快些. 2. 传输速度方面. JSON的速度要远远快于XML 3. 数据格式 数据格式比较简单, 易于读写, ...
- java如何读写json文件
在实际项目开发中,有时会遇到一些全局的配置缓存,最好的做法是配置redis数据库作为数据缓存,而当未有配置redis服务器时,读取静态资源文件(如xml.json等)也是一种实现方式,但是这有一个弊端 ...
- golang(7):文件读写 & json & 错误处理
终端读写 操作终端相关文件句柄常量 os.Stdin // 标准输入 os.Stdout // 标准输出 (输出到终端) os.Stderr // 标准错误输出 (输出到终端) fmt 常见用法 fm ...
- 【03】Python 文件读写 JSON
1 打开文件 文件操作步骤: 1.打开文件获取文件的句柄,句柄就理解为这个文件 2.通过文件句柄操作文件 3.关闭文件. 1.1 打开方法 f = open('xxx.txt') #需f.close( ...
- C++解析Json,使用JsonCpp读写Json数据
JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式.通常用于数据交换或存储. JsonCpp是一个基于C++语言的开源库,用于C++程序的J ...
随机推荐
- eclipse 打开是报错"reload maven project has encountered a problem"
不需要删除整个 .metadata 如果删除这个代价是重新导入全部项目 D:\eclipse-workspace\.metadata\.plugins\org.eclipse.e4.workbench ...
- Comet技术详解:基于HTTP长连接的Web端实时通信技术
前言 一般来说,Web端即时通讯技术因受限于浏览器的设计限制,一直以来实现起来并不容易,主流的Web端即时通讯方案大致有4种:传统Ajax短轮询.Comet技术.WebSocket技术.SSE(Ser ...
- ListView、PullToRefreshListView滑动加载可见item
最近用的了PullToRefreshListView框架,也在listView中加载图片,对于滑动加载可见item,网上找了一些相关文档,但都不太合适,如:http://blog.csdn.net/z ...
- innosetup安装之前关闭进程
InnoSetup覆盖安装的时候可能会因为源程序正在运行而安装失败,以下脚本能够关闭原运行进程. [code] // 安装前检查关闭**进程 function InitializeSetup():Bo ...
- com.android.org.bouncycastle.jce.exception.ExtCertPathValidatorException: Could not validate certificate: current time:
http://www.cnblogs.com/mayongsheng/p/4387109.html https://github.com/awslabs/aws-sdk-android-samples ...
- 转:RTMPdump使用相关
在FFMPEG中使用libRTMP的经验 FFMPEG在编译的时候可以选择支持RTMP的类库libRTMP.这样ffmpeg就可以支持rtmp://, rtmpt://, rtmpe://, rtmp ...
- svn 403 Forbidden
用svn client的时候出现这么一个问题,客户端能正常check out,但是在check in(commit,mkdir等)的时候出错了: Server sent unexpected retu ...
- 使用VSTS/TFS搭建iOS持续集成环境
TFS 自2015版开始支持跨平台的持续集成环境,通过提供开源的build agent为 Windows / linux / macOS 提供了统一的持续集成环境管理能力.这篇文章给大家介绍一下如何使 ...
- Python学习笔记(3):数据集操作-列的统一操作
对数据库查询,将得到一个数据集: rs=AccessDB.GetData("select * from log where f_code='600259' limit 5,5") ...
- C#根据日期范围过滤IQueryable<T>集合
需要扩展IQueryable<T>,参数包括一个DateTime类型的属性.开始日期.截止日期. public static class MyExtension { public stat ...