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"}

原文地址:https://www.cnblogs.com/gylhaut/p/5651634.html