反序列化字符串不转换数组
Deserialize string not converting array
我试图将此字符串反序列化为一个对象,但每次转换时,角色 属性 都不会转换回来。
{"LoginAttemptId":235,"UserProfileId":4,"Username":"devclient1","Id":null,"SubscriptionType":null, "Roles":["Client"]}
我已经尝试了这两种反序列化方法:
PauperToPresidentSerializedModel serializeModel =
JsonConvert.DeserializeObject<PauperToPresidentSerializedModel>(decUserData);
//PauperToPresidentSerializedModel serializeModel
// = serializer.Deserialize<PauperToPresidentSerializedModel>(decUserData);
并且都给我和对象,其中角色 属性 为空,而不是其中包含 'Client'。
这是 PauperToPresidentSerializedModel 对象定义
public class PauperToPresidentSerializedModel
{
public long LoginAttemptId { get; set; }
public long UserProfileId { get; set; }
public string Username { get; set; }
public string Id { get; set; }
public string SubscriptionType { get; set; }
public string[] Roles { get; private set; }
public PauperToPresidentSerializedModel(PauperToPresidentPrincipal principal)
{
LoginAttemptId = principal.LoginAttemptId;
UserProfileId = principal.UserProfileId;
Username = principal.Username;
Id = principal.Id;
SubscriptionType = principal.SubscriptionType;
Roles = principal.Roles;
}
public PauperToPresidentSerializedModel()
{
}
}
您的 Roles
字段具有 private setter。你可以:
成功public
让合同解析器访问私有字段:
contractResolver.DefaultMembersSearchFlags |= BindingFlags.NonPublic;
创建自定义合同解析器(我猜你不想走那条路)。
您需要拥有所有属性 public 才能序列化和反序列化:
public string[] Roles { get; set; }
我试图将此字符串反序列化为一个对象,但每次转换时,角色 属性 都不会转换回来。
{"LoginAttemptId":235,"UserProfileId":4,"Username":"devclient1","Id":null,"SubscriptionType":null, "Roles":["Client"]}
我已经尝试了这两种反序列化方法:
PauperToPresidentSerializedModel serializeModel =
JsonConvert.DeserializeObject<PauperToPresidentSerializedModel>(decUserData);
//PauperToPresidentSerializedModel serializeModel
// = serializer.Deserialize<PauperToPresidentSerializedModel>(decUserData);
并且都给我和对象,其中角色 属性 为空,而不是其中包含 'Client'。
这是 PauperToPresidentSerializedModel 对象定义
public class PauperToPresidentSerializedModel
{
public long LoginAttemptId { get; set; }
public long UserProfileId { get; set; }
public string Username { get; set; }
public string Id { get; set; }
public string SubscriptionType { get; set; }
public string[] Roles { get; private set; }
public PauperToPresidentSerializedModel(PauperToPresidentPrincipal principal)
{
LoginAttemptId = principal.LoginAttemptId;
UserProfileId = principal.UserProfileId;
Username = principal.Username;
Id = principal.Id;
SubscriptionType = principal.SubscriptionType;
Roles = principal.Roles;
}
public PauperToPresidentSerializedModel()
{
}
}
您的 Roles
字段具有 private setter。你可以:
成功public
让合同解析器访问私有字段:
contractResolver.DefaultMembersSearchFlags |= BindingFlags.NonPublic;
创建自定义合同解析器(我猜你不想走那条路)。
您需要拥有所有属性 public 才能序列化和反序列化:
public string[] Roles { get; set; }