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. 每天一个linux命令(4):mkdir命令

    linux mkdir 命令用来创建指定的名称的目录,要求创建目录的用户在当前目录中具有写权限,并且指定的目录名不能是当前目录中已有的目录. 1.命令格式: mkdir [选项] 目录... 2.命令 ...

  2. 利用BitLocker和vhdx创建一个有加密的Win10系统

    如果电脑不支持TPM加密BitLocker,就无法对系统盘进行全盘加密. 可以采用一个变通的方法:创建一个vhdx,将这个虚拟磁盘进行BitLocker加密,然后在这个盘里安装操作系统,最后把vhdx ...

  3. Mybatis多参传递的四种解决方案

    Mybatis多参传递的四种解决方案 代码异常:org.apache.ibatis.binding.BindingException: Parameter 'param' not found. 长时间 ...

  4. SQL Server复制入门(一)----复制简介

    简介 SQL Server中的复制(Replication)是SQL Server高可用性的核心功能之一,在我看来,复制指的并不仅仅是一项技术,而是一些列技术的集合,包括从存储转发数据到同步数据到维护 ...

  5. Eclipse Maven to create Struts2 Project

    Follow the guide in this page: http://blog.csdn.net/topwqp/article/details/8882965 problem met : Des ...

  6. PUT vs POST in REST

    来自:http://stackoverflow.com/questions/630453/put-vs-post-in-rest http://www.15yan.com/story/7dz6oXiS ...

  7. (ETW) Event Tracing for Windows 入门 (含pdf下载)

    内容提纲 • ETW 介绍 • ETW 使用 • ETW 监控本机Demo • ETW 监控远程机器的思路 • 底层类库:EventSource 介绍 • 底层类库:TraceEvent 介绍 ETW ...

  8. define 与 inline

    define 就是代码替换,在编译阶段进行简单的代码替换,大量用于宏定义开关,以及定义表达式和常量,如: 1.开关定义 #define CONFIG_OPENED 使用: #ifdef CONGFIG ...

  9. Go 若干技巧

    此文来自 http://denvergophers.com/2013-09/tips-and-tricks.slide ###本文主要涉及到: 1. formatting 技巧 2. 异常处理技巧 3 ...

  10. 菜鸟教程之工具使用(十二)——Eclipse突出显示选中的相同变量

    大家都知道在Eclipse中,选中一个变量或者方法名(或者说是一个单词),当前文件中跟他一样的变量会被突出显示,这个功能很好用.能让我们很方便的找到该变量在哪被用到了.前段时间我的Eclipse的这个 ...