zoukankan      html  css  js  c++  java
  • Json序列化与反序列化

    1.泛型方法
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace StreamTest
    {
        public class JsonSerialization
        {
            #region Serialize/Deserialize
            public static string Serialize<T>(T obj)
            {
                DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T));
                using (MemoryStream ms = new MemoryStream())
                {
                    serializer.WriteObject(ms, obj);
                    return Encoding.UTF8.GetString(ms.ToArray());
                }
            }
    
            public static T Deserialize<T>(string input)
            {
                if (string.IsNullOrWhiteSpace(input))
                {
                    return default(T);
                }
                DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T));
                using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(input)))
                {
                    return (T)serializer.ReadObject(ms);
                }
            }
    
            #endregion
        }
    }

    2.泛型类

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Runtime.Serialization.Json;
    using System.Runtime.Serialization;
    using System.IO;
    
    namespace ConsoleApplication16
    {
        public class JsonSerialization<T>
        {
            public static string Serialize(T obj)
            {
                DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T));
                using (MemoryStream ms = new MemoryStream())
                {
                    serializer.WriteObject(ms, obj);
                    return Encoding.UTF8.GetString(ms.ToArray());
                }
            }
    
            public static T Deserialize(string input)
            {
                if (string.IsNullOrWhiteSpace(input))
                {
                    return default(T);
                }
                DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T));
                using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(input)))
                {
                    return (T)serializer.ReadObject(ms);
                }
            }
        }
    }

    两种方法比较,第二种更加规范,建议用第二种写法。

    3.举例说明

    public class Person
        {
            public string Id {get;set;}
    
            public string Name {get;set;}
        }
      static void Main(string[] args)
            {
                Person person = new Person
                {
                    Id = "12345",
                    Name = "xiaoming"
                };
    
                string  str = JsonSerialization<Person>.Serialize(person);
                Console.WriteLine(str);
                Console.ReadKey();
            }

    输出结果:{"Id":"12345","Name":"xiaoming"}

  • 相关阅读:
    PAT 甲级 1072 Gas Station (30 分)(dijstra)
    python flask框架学习(二)——第一个flask程序
    python flask框架学习(一)——准备工作和环境配置与安装
    【Beats】Filebeat工作原理(十七)
    【Beats】Filebeat介绍及使用(十六)
    Dapper简介
    Sequelize ORM
    StackExchange / Dapper
    TypeORM 简介
    Egg.js 是什么?
  • 原文地址:https://www.cnblogs.com/gylhaut/p/5651634.html
Copyright © 2011-2022 走看看