JSON的数据类型:
- number:和JavaScript的number完全一致;
- boolean:就是JavaScript的true或false;
- string:就是JavaScript的string;
- null:就是JavaScript的null;
- array:就是JavaScript的Array表示方式——[];
- object:就是JavaScript的{ ... }表示方式。
以及上面的任意组合。并且,JSON还定死了字符集必须是UTF-8。为了统一解析,JSON的字符串规定必须用双引号"",Object的键也必须用双引号"",如果JSON中含有转义字符,则需要转义。
1 // 序列化
2 private string ObjectToJson(Person obj)
3 {
4 JavaScriptSerializer jsonSerialize = new JavaScriptSerializer();
5 return jsonSerialize.Serialize(obj);
6 }
7 // 反序列化
8 private Person JsonToObject(string jsonStr)
9 {
10 JavaScriptSerializer jsonSerialize = new JavaScriptSerializer();
11 return jsonSerialize.Deserialize<Person>(jsonStr);
12 }
注:可用 [ScriptIgnore] 标记不序列化的属性
2、使用 DataContractJsonSerializer类实现序列化
namespace:System.Runtime.Serialization.Json
eg:
1 // 序列化
2 using (MemoryStream stream =new MemoryStream())
3 {
4 DataContractJsonSerializer jsonSerialize =new DataContractJsonSerializer(Person);
5 jsonSerialize.WriteObject(stream, obj);
6 jsonStr = Encoding.UTF8.GetString(stream.ToArray());
7 }
8 // 反序列化
9 using (MemoryStream stream =new MemoryStream(Encoding.UTF8.GetBytes(jsonStr)))
10 {
11 DataContractJsonSerializer jsonSerialize =new DataContractJsonSerializer(Person);
12 obj = (Person)jsonSerialize.ReadObject(stream);
13 }
注:可用 [IgnoreDataMember] 标记不序列化的属性
3、使用开源类库Newtonsoft.Json实现序列化
namespace:Newtonsoft.Json
eg:
1 using System;
2 using System.Collections.Generic;
3 using System.Data;
4 using System.Linq;
5 using System.Web;
6 using System.Web.UI;
7 using System.Web.UI.WebControls;
8 using Newtonsoft.Json;
9 using Newtonsoft.Json.Linq;
10
11 namespace DataInterface
12 {
13 public partial class UserLogin : System.Web.UI.Page
14 {
15 protected void Page_Load(object sender, EventArgs e)
16 {
17 string errMsg = string.Empty;
18 if (Request["JsonString"] != null)
19 {
20 string jsonString = Request["JsonString"].ToString();
21 JObject array;
22 string userName = string.Empty, password = string.Empty;
23 try
24 {
25 array = (JObject)JsonConvert.DeserializeObject(jsonString);
26 userName = array["userName"].ToString().Trim('"');
27 password = array["password"].ToString().Trim('"').ToUpper();
28 }
29 catch
30 {
31 errMsg = "传入参数错误";
32 }
33 }
34 }
35 }
36 }
1 string jsonText = string.Empty;
2 StringWriter sw = new StringWriter();
3 JsonWriter writer = new JsonTextWriter(sw);
4
5 writer.WriteStartObject();
6 writer.WritePropertyName("result");
7 writer.WriteValue("1");
8 writer.WritePropertyName("msg");
9 writer.WriteValue("sucess");
10 writer.WriteEndObject();
11 writer.Flush();
12 jsonText = sw.GetStringBuilder().ToString();