.net已经集成了json解析,类名叫DataContractJsonSerializer
DataContractJsonSerializer 类型公开以下成员。
名称 | 说明 | |
---|---|---|
DataContractJsonSerializer(Type) | 初始化 DataContractJsonSerializer 类的新实例,以便序列化或反序列化指定类型的对象。 | |
DataContractJsonSerializer(Type, IEnumerable<Type>) | 初始化 DataContractJsonSerializer 类的新实例,以便序列化或反序列化指定类型的对象以及可在对象图中呈现的已知类型的集合。 |
名称 | 说明 | |
---|---|---|
Equals(Object) | 确定指定的 Object 是否等于当前的 Object。 (继承自 Object。) | |
Finalize | 允许对象在垃圾回收对 Object 进行回收之前尝试释放资源并执行其他清理操作。 (继承自 Object。) | |
GetHashCode | 用作特定类型的哈希函数。 (继承自 Object。) | |
GetType | 获取当前实例的 Type。 (继承自 Object。) | |
MemberwiseClone | 创建当前 Object 的浅表副本。 (继承自 Object。) | |
ReadObject | 以 JSON(JavaScript 对象表示法)格式读取文档流,并返回反序列化的对象。 | |
ToString | 返回表示当前对象的字符串。 (继承自 Object。) | |
WriteObject | 将指定对象序列化为 JavaScript 对象表示法 (JSON) 数据,并将生成的 JSON 写入流中。 |
namespace SL_DataContractJsonSerializer { public partial class Page : UserControl { public Page() { InitializeComponent(); } //This uses an event handler, not SL data binding void OnClick(object sender, EventArgs args) { txtOutput1.Text = "Create a User object and serialize it."; string json = WriteFromObject(); txtOutput2.Text = json.ToString(); // Displays: {"Age":42,"Name":"Bob"} txtOutput3.Text = "Deserialize the data to a User object."; string jsonString = "{'Name':'Bill', 'Age':53}"; User deserializedUser = ReadToObject(jsonString); txtOutput4.Text = deserializedUser.Name; // Displays: Bill txtOutput5.Text = deserializedUser.Age.ToString(); // Displays: 53 } // Create a User object and serialize it to a JSON stream. public static string WriteFromObject() { //Create User object. User user = new User("Bob", 42); //Create a stream to serialize the object to. MemoryStream ms = new MemoryStream(); // Serializer the User object to the stream. DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(User)); ser.WriteObject(ms, user); byte[] json = ms.ToArray(); ms.Close(); return Encoding.UTF8.GetString(json, 0, json.Length); } // Deserialize a JSON stream to a User object. public static User ReadToObject(string json) { User deserializedUser = new User(); MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json)); DataContractJsonSerializer ser = new DataContractJsonSerializer(deserializedUser.GetType()); deserializedUser = ser.ReadObject(ms) as User; ms.Close(); return deserializedUser; } } [DataContract] public class User { [DataMember] public string Name { get; set; } [DataMember] public int Age { get; set; } public User() { } public User(string newName, int newAge) { Name = newName; Age = newAge; } } }