首先看一下JSON字符串
{ "errcode" : 0, "errmsg" : "ok", }两个字段都是小写。
如果我们把类的字段定义成小写,不符合规范,看着也不习惯。
算了,直接上代码吧。
[TestClass] public class JsonTest { internal class JsonClass { [JsonProperty("errcode")] public int ErrCode { get; set; } [JsonProperty("errmsg")] public string ErrMsg { get; set; } } [TestMethod] public void TestMethod1() { var js = new JavaScriptSerializer(); var jsonCls1 = new JsonClass { ErrCode = 0, ErrMsg = "ok" }; var jsonStr1 = js.Serialize(jsonCls1); var jsonStr2 = JsonConvert.SerializeObject(jsonCls1); //生成的JSON后面不会有个逗号 //JsonProperty对JavaScriptSerializer无效 Assert.AreEqual(jsonStr1, "{\"ErrCode\":0,\"ErrMsg\":\"ok\"}"); Assert.AreNotEqual(jsonStr1, "{\"ErrCode\":0,\"ErrMsg\":\"ok\",}"); Assert.AreEqual(jsonStr2, "{\"errcode\":0,\"errmsg\":\"ok\"}"); Assert.AreNotEqual(jsonStr2, "{\"errcode\":0,\"errmsg\":\"ok\",}"); const string jsonStr = "{\"errcode\":0,\"errmsg\":\"ok\",}"; var jsonCls = JsonConvert.DeserializeObject<JsonClass>(jsonStr); Assert.IsNotNull(jsonCls); Assert.AreEqual(jsonCls.ErrCode,0); try { jsonCls = js.Deserialize<JsonClass>(jsonStr); Assert.IsNotNull(jsonCls); } catch (ArgumentException) { Assert.Fail("无效的 JSON 基元"); } } }