Jsonの大文字と小文字の問題
4880 ワード
まずJSON文字列を見てみましょう
クラスのフィールドを小文字に定義すると、仕様に合わず、見ても慣れません.
もういい、直接コードをつけましょう.
{
"errcode" : 0,
"errmsg" : "ok",
}
の2つのフィールドは小文字です.クラスのフィールドを小文字に定義すると、仕様に合わず、見ても慣れません.
もういい、直接コードをつけましょう.
[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 ");
}
}
}