建站资讯

C# 中应用JSON

作者:admin 发布时间:2020-11-18
C# 中应用JSON - DataContractJsonSerializer 创作者:Aisencici / / 归类:Asp .net网站建设 / 访问:3907

C#中应用JSON不用应用第三方库,应用.NET Framwork3.5内置的System.Runtime.Serialization.Json就可以非常好的进行JSON的分析。

有关JSON的新手入门详细介绍见(的图很品牌形象):

一、Using

必须加上引入:System.ServiceModel.Web 和 System.Runtime.Serialization,随后应用Using:

using System.Runtime.Serialization.Json;
using System.Runtime.Serialization;

 二、界定编码序列化的类

倘若大家要转换的JSON标识符串文件格式为:

{


    encoding : UTF-8 ,

    plug-ins :[ python , c++ , ruby ],


    indent :{


        length :3,


        use_space :true

    }

}

随后撰写相对的编码序列化的类,留意下边类加的Attribute:

[DataContract(Namespace =  p>

class Config
{
 [DataMember(Order = 0)]
 public string encoding { get; set; }
 [DataMember(Order = 1)]
 public string[] plugins { get; set; }
 [DataMember(Order = 2)]
 public Indent indent { get; set; }
}


[DataContract(Namespace =  p>

三、目标转换为JSON标识符串

应用WriteObject方式:

var config = new Config(){

 encoding =  UTF-8 ,
 plugins = new string[]{ python ,  C++ ,  C# },
 indent = new Indent(){ length = 4, use_space = false}
 };
var serializer = new DataContractJsonSerializer(typeof(Config));
var stream = new MemoryStream();
serializer.WriteObject(stream, config);

byte[] dataBytes = new byte[stream.Length];




stream.Position = 0;

stream.Read(dataBytes, 0, (int)stream.Length);

string dataString = Encoding.UTF8.GetString(dataBytes);

Console.WriteLine( JSON string is: );

Console.WriteLine(dataString);

四、JSON标识符串转目标

应用ReadObject方式: 

var mStream = new MemoryStream(Encoding.Default.GetBytes(dataString));

Config readConfig = (Config)serializer.ReadObject(mStream);

Console.WriteLine( Encoding is: {0} , readConfig.encoding);
foreach (string plugin in readConfig.plugins)
{
 Console.WriteLine( plugins is: {0} , plugin);
}
Console.WriteLine( indent.length is: {0} , readConfig.indent.length);
Console.WriteLine( indent.use_space is: {0} , readConfig.indent.use_space);

五、輸出結果:


JSON string is:

{ encoding : UTF-8 , plugins :[ python , C++ , C# ], indent :{ length :4, use_space :false}}
Encoding is: UTF-8
plugins is: python
plugins is: C++
plugins is: C#
indent.length is: 4
indent.use_space is: False

创作者:CoderZh(CoderZh的技术性blog - blog园)
新浪微博:coderzh 
出處:p>
文中标识:JSON - DataContractJsonSerializer
From:coderzh/archive/2008/11/


收缩