C# 中使用JSON -DataContractJsonSerializer
2012-04-11 16:42
573 查看
C# 中使用JSON -DataContractJsonSerializer
C#中使用JSON不需要使用第三方库,使用.NETFramwork3.5自带的System.Runtime.Serialization.Json即可很好的完成JSON的解析。关于JSON的入门介绍见(首页的图很形象):
http://www.json.org/
一、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 = "http://coderzh.cnblogs.com")]
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 = "http://coderzh.cnblogs.com")]
class Indent
{
[DataMember(Order = 0)]
public int length { get; set; }
[DataMember(Order = 1)]
public bool use_space { get; set; }
}
三、对象转化为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
相关文章推荐
- C# 中使用JSON - DataContractJsonSerializer
- C# 中使用JSON - DataContractJsonSerializer
- [C#] 使用 DataContractJsonSerializer 序列化 反序列化
- C# 中使用JSON - DataContractJsonSerializer
- C#使用DataContractJsonSerializer实现Json格式的序列化和反序列化
- C# 中使用JSON - DataContractJsonSerializer
- C# 中使用JSON - DataContractJsonSerializer
- C# .net core 使用DataContractJsonSerializer
- 关于C#使用DataContractJsonSerializer来进行JSON解析
- C# 中使用JSON - DataContractJsonSerializer
- C# 中使用JSON - DataContractJsonSerializer
- .Net——使用DataContractJsonSerializer进行序列化及反序列化基本操作
- 不同FrameWork版本中datacontractjsonserializer 类的使用
- C#中如何将List<自定义>转为Json格式 及相关函数-DataContractJsonSerializer
- 解决如下json格式的字符串不能使用DataContractJsonSerializer序列化和反序列化
- 使用DataContractJsonSerializer进行JSON序列化的JSONHelper类
- 使用.net 3.5的DataContractJsonSerializer进行JSON Serialization
- C#中怎样将List<自己定义>转为Json格式 及相关函数-DataContractJsonSerializer
- 使用.net 3.5的DataContractJsonSerializer进行JSON Serialization
- .NET 3.5: 使用DataContractJsonSerializer进行JSON 序列化