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 = 0)]
        public int Id;

        [DataMember(Name = "name", Order = 1)]
        public string Name;

        [DataMember(Name = "child", Order = 2)]
        public Child child = new Child();

        [DataMember(Name = "list", Order = 3)]
        public List<int> Ids = new List<int>();

        [DataMember(Name = "dictionary", Order = 4)]
        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]标记来让某个变量不参与序列化。

时间: 2024-10-07 12:13:26

C#读写Json的相关文章

jquery读写json

网易hex是个好东东啊 jquery中getJSON()用法-json文件内容遍历输出方法 http://www.111cn.net/wy/jquery/51469.htm jquery读写json,布布扣,bubuko.com

iOS 如何用JSONKit读写JSON文件

如何用JSONKit读写JSON文件 分类: ios2013-04-20 12:46 510人阅读 评论(0) 收藏 举报 JSON文件格式简单,使用方便,值得一用. 目前已经有多个库支持Json文件的解析,在这之中,JSONkit用起来方便,而且效率比较高,本文介绍的就是JSONKit的使用方法. 1.准备工作 下载JSONKit包:http://download.csdn.net/detail/enuola/4523160 2.写json文件 创建文件 //创建文件目录以及文件,需要用到fi

Python怎么读写json格式文件

JSON-是一个轻量级的数据交换格式.点击打开百度百科 JSON维基百科:http://zh.wikipedia.org/wiki/JSON json模块 关于json的官方文档:点击打开链接 本文由@The_Third_Wave(Blog地址:http://blog.csdn.net/zhanh1218)原创.不定期更新,有错误请指正. Sina微博关注:@The_Third_Wave 如果这篇博文对您有帮助,为了好的网络环境,不建议转载,建议收藏!如果您一定要转载,请带上后缀和本文地址. d

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

最近的好几个月都没有搞Android编程了,逐渐的都忘却了一些东西.最近打算找一份Android的工作,要继续拾起以前的东西.公司月初搬家之后就一直没有网络,直到今日公司才有网络接入,各部门才开始办公.不说这些了,下面开始今天的正文. JSON格式的数据通常用于网络传输,尤其是在移动设备上与服务端进行数据交互.JSON与XML比较有明显的优势.XML格式的数据非常臃肿,传递少量的数据就要附带很多额外的格式数据.而JSON除了少量的符号外,全部是真正的数据,所以有越来越多的程序用JSON来取代XM

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

JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. 1.json.dumps()和json.loads()是json格式处理函数(可以这么理解,json是字符串) json.dumps()函数是将一个Python数据类型列表进行json格式的编码(可以这么理解,json.dumps()函数是将字典转化为字符串) json.loads()函数是将json格式数据转换为字典(可以这么理解,json.loads()函数

【Java】【21】读写Json文件

正文: 1,通用读取方法,返回map public static List<Map> JsonRead(HttpServletRequest request, String path) { List<Map> maps = null; String dir = request.getSession().getServletContext().getRealPath(path); System.out.println(path); System.out.println(dir); i

java如何读写json文件

在实际项目开发中,有时会遇到一些全局的配置缓存,最好的做法是配置redis数据库作为数据缓存,而当未有配置redis服务器时,读取静态资源文件(如xml.json等)也是一种实现方式,但是这有一个弊端,因为作为静态资源存储在站内势必就导致信息的安全性很低,所以如果采用这种方式则建议记录一些安全要求很低的配置属性,当然最好的做法就是使用redis缓存技术.下面就json文件的读写进行进一步说明. 1.json通用文件读取方法,这个方法会返回map对象: /** * json读取 * * @para

使用boost库完成读写JSON字符串

boost库的编译不做赘述,这里用的版本是1.69.0,其他版本应该差不多 boost官网:https://www.boost.org/ 0.前言 今天要整的JSON是这样的 { "description": "this is a JSON test", "version": "100", "list": { "listkey1": "listvalue1", &qu

读写json数据

json.dumps(),json.dump,json.loads,json.load的使用 import json d1 = [1, 2, 'abc', {'name': 's', 'age': 18}] d2 = {'b': None, 'a': 1, 'c': 'cc'} '''dumps()与dump()区别在于接口的不同,dump()是对文件的写操作''' print json.dumps(d1) print json.dumps(d2) print json.dumps(d2, se