转自:http://blog.sina.com.cn/s/blog_59cb8a930100vlbr.html
C# 中使用JSON - DataContractJsonSerializ er
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;
using
二、定义序列化的类
假如我们要转化的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; }
}
class
{
}
[DataContract(Namespace
class
{
}
三、对象转化为JSON字符串
使用WriteObject方法:
var
var
var
serializer.WriteObject(stream,
byte[]
stream.Position
stream.Read(dataBytes,
string
Console.WriteLine("JSON
Console.WriteLine(dataString);
四、JSON字符串转对象
使用ReadObject方法:
var
Config
Console.WriteLine("Encoding
foreach
{
}
Console.WriteLine("indent.length
Console.WriteLine("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
{"encoding":"UTF-8","plugins":["python","C++","C#"],"indent":{"length":4,"use_space":false}}
Encoding
plugins
plugins
plugins
indent.length
indent.use_space