使用DataContractJsonSerializer进行序列化和反序列化

6 篇文章 0 订阅
1 篇文章 0 订阅

using System;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Json;
using System.Text;

namespace ConsoleApplicationTestJson
{
    [DataContract]
    internal class BankInfo
    {
        [DataMember]
        public string Name { get; set; }

        [DataMember]
        public string BankCode { set; get; }
    }

    class Program
    {
        static void Main(string[] args)
        {
            // 如果是从WCF服务拿到数据,BankInfo类型本身已经标记过DataContract特性和DataMember特性,
            // 所以可以直接用来序列化和反序列化。
            //BankInfoServiceClient client = new BankInfoServiceClient();
            //BankInfo[] bankInfos = client.GetBankList();
            //

            BankInfo[] bankInfos = new BankInfo[]
            {
                new BankInfo() {BankCode = "002", Name = "AA银行"},
                new BankInfo() {BankCode = "003", Name = "xx银行"},
                new BankInfo() {BankCode = "004", Name = "yy银行"},
                new BankInfo() {BankCode = "005", Name = "zz银行"},
            };


            DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(BankInfo[]));
            MemoryStream ms = new MemoryStream();
            serializer.WriteObject(ms, bankInfos);
            string jsonString = Encoding.UTF8.GetString(ms.ToArray());

            String path = @".\BankInfos.json";
            if (File.Exists(path))
                File.Delete(path);
            File.AppendAllText(path, jsonString);
            string jsonString2 = File.ReadAllText(path, Encoding.UTF8);

            MemoryStream ms2 = new MemoryStream(Encoding.UTF8.GetBytes(jsonString2));
            object o = serializer.ReadObject(ms2);

            BankInfo[] list = o as BankInfo[];
        }
    }
}


只是简单的例子,使用时要进行封装以方便重用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值