0

我正在运行的测试只需将 .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
}

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

在此处输入图像描述

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

有任何想法吗?

4

1 回答 1

4

这两个领域有私人二传手。如果您想使用私有设置器,那么您可以更新您的合同解析器以允许这样做,如本答案中所述。

这里还介绍了一些其他技术。

其中最简单的方法是使用以下方式标记您的属性[JsonProperty]

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

[JsonProperty]
public int ExpiresIn { get; private set; }
于 2013-07-02T23:53:14.293 回答