[C#]JSON框架

本文深入探讨了C#中处理JSON的各种框架,包括Newtonsoft.Json和System.Text.Json的使用方法,对比了两者在序列化和反序列化时的性能差异,并提供了实际示例帮助读者理解和应用。
摘要由CSDN通过智能技术生成
using System;
using System.Runtime.Serialization.Json;
using System.Runtime.Serialization;
using System.IO;
using System.Text;
using System.Collections.Generic;

namespace TestJson
{
	[DataContract]
	public class DataItem : JSON<DataItem>{
		[DataMember]
		public string username = "test";
	}
	[DataContract]
	public class Config:TestJson.JSON<Config>
{
	public Config(){
		encoding = "utf-8";
	}
	[DataMember(EmitDefaultValue = true)]
	public string id = "100";
    [DataMember]
    public string encoding { get; set; }
    [DataMember]
    public List<DataItem> plugins{get;set;}
}
	[DataContract]
	/// <summary>
	/// Description of JsonTest.
	/// </summary>
	public class JSON<T>
	{
		public string Stringify(){
			return Stringify(Encoding.UTF8);
		}
	    public string Stringify(Encoding encode){
			var serializer = new DataContractJsonSerializer(typeof(T));
			var stream = new MemoryStream();
			serializer.WriteObject(stream, this);
			
			byte[] dataBytes = new byte[stream.Length];
			
			stream.Position = 0;
			
			stream.Read(dataBytes, 0, (int)stream.Length);
			
			string dataString = encode.GetString(dataBytes);
			stream.Close();
			serializer =  null;
			stream = null;
			return dataString;
	    } 
		public static T Parse(string text)
		{
			return Parse(text, Encoding.UTF8);
		}
		public static T Parse(string text, Encoding encode)
		{
			var serializer = new DataContractJsonSerializer(typeof(T));
			var mStream = new MemoryStream(encode.GetBytes(text));
			 T readConfig = ( T)serializer.ReadObject(mStream);
			
			mStream.Close();
			serializer = null; 
			mStream = null;
			return readConfig;
		}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值