.net已经集成了json解析,类名叫DataContractJsonSerializer
DataContractJsonSerializer 类型公开以下成员。
| 名称 | 说明 | |
|---|---|---|
|
|
DataContractJsonSerializer(Type) | DataContractJsonSerializer 类的新实例,以便序列化或反序列化指定类型的对象。 |
|
|
DataContractJsonSerializer(Type, IEnumerable<Type>) | DataContractJsonSerializer 类的新实例,以便序列化或反序列化指定类型的对象以及可在对象图中呈现的已知类型的集合。 |
| 名称 | 说明 | |
|---|---|---|
|
|
Equals(Object) | Object。) |
|
|
Finalize | Object。) |
|
|
GetHashCode | Object。) |
|
|
GetType | Object。) |
|
|
MemberwiseClone | 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; } } }