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的更多相关文章

  1. Android读写JSON格式的数据之JsonWriter和JsonReader

    近期的好几个月都没有搞Android编程了,逐渐的都忘却了一些东西.近期打算找一份Android的工作,要继续拾起曾经的东西.公司月初搬家之后就一直没有网络,直到今日公司才有网络接入,各部门才開始办公 ...

  2. python 读写json文件(dump, load),以及对json格式的数据处理(dumps, loads)

    JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. 1.json.dumps()和json.loads()是json ...

  3. 读写JSON作配置文件

    个人不太喜欢XML,于是找了JSON来做配置,JSON虽然有很多引号,但这种key-value的形式,非常符合我的思维,就像是一个萝卜一个坑.最近在读写JSON文件,需要注意两个问题. 中文乱码: 直 ...

  4. iOS 如何用JSONKit读写JSON文件

     如何用JSONKit读写JSON文件 分类: ios2013-04-20 12:46 510人阅读 评论(0) 收藏 举报 JSON文件格式简单,使用方便,值得一用. 目前已经有多个库支持Json文 ...

  5. Qt读写Json

    Qt操作Json 1.QJsonDocument 1.详细说明 QJsonDocument类提供了读写JSON文档的方法. QJsonDocument是一个封装了完整JSON文档的类,可以从基于UTF ...

  6. python 读写 json文件

    json的优势: 1. 数据体积方面. JSON相对于XML来讲,数据的体积小,传递的速度更快些. 2. 传输速度方面. JSON的速度要远远快于XML 3. 数据格式 数据格式比较简单, 易于读写, ...

  7. java如何读写json文件

    在实际项目开发中,有时会遇到一些全局的配置缓存,最好的做法是配置redis数据库作为数据缓存,而当未有配置redis服务器时,读取静态资源文件(如xml.json等)也是一种实现方式,但是这有一个弊端 ...

  8. golang(7):文件读写 & json & 错误处理

    终端读写 操作终端相关文件句柄常量 os.Stdin // 标准输入 os.Stdout // 标准输出 (输出到终端) os.Stderr // 标准错误输出 (输出到终端) fmt 常见用法 fm ...

  9. 【03】Python 文件读写 JSON

    1 打开文件 文件操作步骤: 1.打开文件获取文件的句柄,句柄就理解为这个文件 2.通过文件句柄操作文件 3.关闭文件. 1.1 打开方法 f = open('xxx.txt') #需f.close( ...

  10. C++解析Json,使用JsonCpp读写Json数据

    JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式.通常用于数据交换或存储. JsonCpp是一个基于C++语言的开源库,用于C++程序的J ...

随机推荐

  1. iOS开发-UITableView顶部图片下拉放大

    关于顶部图片下拉放大,在用户展示的个人中心显示用户个人头像信息,设置UITableView的headerView实现,UITableView继承自UIScrollView,同样的设置UIScrollV ...

  2. ESXi5 中克隆Linux虚拟主机的网络配置

    虚拟化技术果然非常方便,尤其是windows主机,克隆后在网络管理中改一下IP即可. 但对于Linux来说就有点麻烦,只修改IP还不行,还有MAC地址,网卡指定等,这个规程对应新手来说没有大半天搞不定 ...

  3. time

    http://blog.csdn.net/JGood/archive/2010/04/07/5457284.aspx    Python提供了多个内置模块用于操作日期时间,像calendar,time ...

  4. 转:LIRE的使用

    LIRE的使用:创建索引 LIRE(Lucene Image REtrieval)提供一种的简单方式来创建基于图像特性的Lucene索引.利用该索引就能够构建一个基于内容的图像检索(content- ...

  5. Level shifting a +/- 2.5V signal to 0 - 5V

    Google : Op-Amp Level Shifter Level shifting a +/- 2.5V signal to 0 - 5V I have a front end module t ...

  6. solr多core的处理

    有2中配置方式,一是从Solr Admin进行multi core的配置. 在Solr Admin控制台里面选择:Core Admin 选择Add Core 然后把你准备好的路径写到里面去. name ...

  7. 第六章 - 图像变换 - 图像拉伸、收缩、扭曲、旋转[2] - 透视变换(cvWarpPerspective)

    透视变换(单应性?)能提供更大的灵活性,但是一个透视投影并不是线性变换,因此所采用的映射矩阵是3*3,且控点变为4个,其他方面与仿射变换完全类似,下面的例程是针对密集变换,稀疏图像变换则采用cvPer ...

  8. 安装scapy遇到的问题

    1. Mac平台 在mac上安装scapy可以说是困难重重,一来因为scapy实在有些小众和老旧,再加上安装说明文档都是python2.5 也没有详细说明一些安装问题. 折腾了大概三个小时之后终于解决 ...

  9. Java 反射练习

    已同步更新至个人blog:http://dxjia.cn/2015/08/java-reflect/ 引用baidubaike上对JAVA反射的说明,如下:JAVA反射机制是在运行状态中,对于任意一个 ...

  10. sqlite 的比较等运算是根据不同的值而不同的,并不是根据的字段类型,因为 sqlite 是弱类型字段

    sqlite 的比较等运算是根据不同的值而不同的,并不是根据的字段类型,因为 sqlite 是弱类型字段   --------------------------------------------- ...