在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
1、JavaScriptSerializer System.Web.Extensions.dll System.Web.Script.Serialization命名空间 Serialize Deserialize http://www.cnblogs.com/dwfbenben/archive/2013/06/06/3122662.html http://www.cnblogs.com/xiaolifeidao/archive/2013/01/28/2879523.html 2、Newtonsoft http://www.newtonsoft.com/json download 添加引用 :Newtonsoft.Json.dll http://www.cnblogs.com/yanweidie/p/4605212.html JsonConvert 数组序列化 using Newtonsoft.Json; using Newtonsoft.Json.Linq; private void button1_Click(object sender, EventArgs e) { string str; Dictionary<string, string> dic = new Dictionary<string, string>(); dic.Add("id", "0002"); dic.Add("name", "kitty"); //数组、对象序列化成字符串 str = JsonConvert.SerializeObject(dic); this.richTextBox1.Text = str; //{"id":"0002","name":"kitty"} //反序列化成对象、数组 var aobj= JsonConvert.DeserializeObject<Dictionary<string,string>>(str); this.Text = aobj["id"].ToString().Trim(); this.Text = aobj["name"]; }
类序列化 JsonConvert与JavaScriptSerializer结果相同。JsonConvert把对象序列化成json串,用JavaScriptSerializer反序列化也是可以的。 public class Person { public Person() { } public Person(int id, string name, int age) { this.Id = id; this.Name = name; this.Age = age; } public int Id { get; set; } public string Name { get; set; } public int Age { get; set; } }
JavaScriptSerializer
private void button2_Click(object sender, EventArgs e) { JavaScriptSerializer jss = new JavaScriptSerializer(); Person pp=new Person(01,"kitty",28); //对象序列化为json字符串 this.richTextBox1.Text= jss.Serialize(pp); //json串反序列化为对象 Person p2 = jss.Deserialize<Person>(this.richTextBox1.Text); this.Text = p2.Id.ToString(); } JsonConvert private void button3_Click(object sender, EventArgs e) { Person pp = new Person(01, "kitty", 28); this.richTextBox1.Text =JsonConvert.SerializeObject(pp); Person p2 = JsonConvert.DeserializeObject<Person>(this.richTextBox1.Text); this.Text = p2.Name; }
datatable序列化为json串 方法1简单 DataTable dt = new DataTable(); dt.Columns.Add("id"); dt.Columns.Add("name"); dt.Rows.Add(1, "aaa"); dt.Rows.Add(2, "bbb"); dt.Rows.Add(3, "ccc"); dt.Rows.Add(4, "eee"); [{"id":"1","name":"aaa"},{"id":"2","name":"bbb"},{"id":"3","name":"ccc"},{"id":"4","name":"eee"}] Newtonsoft.Json.JsonConvert.SerializeObject 方法二
private void button5_Click(object sender, EventArgs e) { DataTable dt = new DataTable(); dt.Columns.Add("id"); dt.Columns.Add("name"); dt.Rows.Add(1, "aaa"); dt.Rows.Add(2, "bbb"); dt.Rows.Add(3, "ccc"); dt.Rows.Add(4, "eee"); JavaScriptSerializer jss = new JavaScriptSerializer(); jss.RegisterConverters(new JavaScriptConverter[]{new DataTableConverter()}); this.richTextBox1.Text = jss.Serialize(dt); } public class DataTableConverter : JavaScriptConverter { public override IDictionary<string, object> Serialize(object obj, JavaScriptSerializer serializer) { DataTable dt = obj as DataTable; Dictionary<string, object> result = new Dictionary<string, object>(); List<Dictionary<string, object>> rows = new List<Dictionary<string, object>>(); foreach (DataRow dr in dt.Rows) { Dictionary<string, object> row = new Dictionary<string, object>(); foreach (DataColumn dc in dt.Columns) { row.Add(dc.ColumnName, dr[dc.ColumnName]); } rows.Add(row); } result["Rows"] = rows; return result; } public override object Deserialize(IDictionary<string, object> dictionary, Type type, JavaScriptSerializer serializer) { throw new NotImplementedException(); } /// <summary> /// 获取本转换器支持的类型 /// </summary> public override IEnumerable<Type> SupportedTypes { get { return new Type[] { typeof(DataTable) }; } } }
.net 4.5 JsonReader reader = new JsonReader(new StringReader(jsonText)); error,无法创建抽象类或接口“Newtonsoft.Json.JsonWriter”的实例 like this ok: 写json WriteStartArray、WriteStartObject,与end WriteEndObject成对出现。
StringWriter sw = new StringWriter(); JsonWriter writer = new JsonTextWriter(sw); writer.Formatting = Formatting.Indented; writer.WriteStartObject(); writer.WritePropertyName("myparams"); writer.WriteStartObject(); writer.WritePropertyName("id"); writer.WriteValue("0001"); writer.WritePropertyName("name"); writer.WriteValue("kitty"); writer.WritePropertyName("age"); writer.WriteValue(99); writer.WriteEndObject(); writer.WriteEndObject(); writer.Flush(); sw.Close(); this.richTextBox1.Text = sw.GetStringBuilder().ToString(); 解析读json Newtonsoft.Json.JsonReader reader = new JsonTextReader(new StringReader(this.richTextBox1.Text)); while (reader.Read()) { this.listBox1.Items.Add(reader.TokenType); }
|
请发表评论