JsonConvert无法反序列化整数和日期?

时间:2013-07-02 23:44:17

标签: .net asp.net-mvc-4 serialization json.net

我正在运行的测试只是将.net对象序列化为json字符串。然后我接受该字符串并尝试将其反序列化为.net对象。正在序列化的字符串看起来不错,但由于某种原因,反序列化在两个属性上失败,一个是int和一个DateTime

这些是正在使用的.net属性:

public string TokenString { get; set; }
public TokenUsage TokenUsage { get; set; }
public string TokenType { get; set; }
public string UserId { get; set; }
public DateTime Expires { get; private set; }
public int ExpiresIn { get; private set; }

这是被序列化的json:

{
    "TokenString":"encryptedtoken",
    "TokenUsage":300,
    "TokenType":"Bearer",
    "UserId":"myId",
    "Expires":"2013-07-05T11:28:18.4179133Z",
    "ExpiresIn":3600,
    "IsExpired":false
}

这是检查员,在对该字符串进行反序列化之后:

enter image description here

如你所见,大多数事情都很好。令牌使用(枚举)似乎甚至正确反序列化。我没有在序列化/反序列化区域做任何花哨的事情。只需JsonConvert.Serialize(myObject)JsonConvert.Deserialize<MyObject>(jsonString)

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

这两个领域有私人制定者。如果您想使用私人制定者,那么您可以更新合约解析程序以允许此操作,如this answer中所述。

还有一些其他技术here

最简单的方法是使用[JsonProperty]标记您的属性,如下所示:

[JsonProperty]
public DateTime Expires { get; private set; }

[JsonProperty]
public int ExpiresIn { get; private set; }