我试图理解为什么我得到以下的空值:

杰森:

{
  "IdentityService": {
    "IdentityTtlInSeconds": "90",
    "LookupDelayInMillis": "3000"
  }
}

类(class):
public class IdentityService
{
    public string IdentityTtlInSeconds { get; set; }

    public string LookupDelayInMillis { get; set; }
}

调用:
  _identityService = JsonConvert.DeserializeObject<IdentityService>(itemAsString);

该类已实例化,但 IdentityTtlInSeconds 和 LookupDelayInMillis 的值为空。我不明白为什么他们应该是

最佳答案

您还需要一个类 - 一个具有一个名为 IdentityService 的属性的对象:

public class RootObject
{
    public IdentityService IdentityService { get; set; }
}

您需要这个类是因为您拥有的 JSON 有一个名为 IdentityService 的属性,而这个对象有两个属性,分别名为 IdentityTtlInSecondsLookupDelayInMillis 。如果您使用默认序列化程序,您的类需要反射(reflect)您在 JSON 字符串中的结构。

现在您可以使用它来反序列化您的字符串:
var rootObject = JsonConvert.DeserializeObject<RootObject>(itemAsString);
_identityService = rootObject.IdentityService;

10-08 09:28