4 回答
TA贡献1942条经验 获得超3个赞
合同不匹配。您应该将 JSON 更改为:
{
"messageFormat": "JSON",
"messageArguments": [
{
"Id": 0,
"FirstName": null,
"LastName": null,
"UserName": null,
"Email": "<email address>",
"RoleId": null,
"Password": "<password>",
"IsActive": null,
"SecretKey": null,
"Token": null,
"Role": null,
"RolePermissions": null,
"ImagePath": null,
"CurrentDate": null
}]
}
或者改变实体
public class Parameter
{
public string messageFormat { get; set; }
public List<MessageArgument> messageArguments { get; set; }
}
class MessageArgument {
public SignUpModal SignUpModal {get; set;}
}
public class SignUpModal
{
public int? Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string UserName { get; set; }
public string Email { get; set; }
public int? RoleId { get; set; }
public string Password { get; set; }
public bool? IsActive { get; set; }
public int? SecretKey { get; set; }
public string Token { get; set; }
public string Role { get; set; }
public string RolePermissions { get; set; }
public string ImagePath { get; set; }
public string CurrentDate { get; set; }
}
TA贡献1806条经验 获得超5个赞
你错过了一节课。将此类添加到您的模型中:
public class MessageArgument
{
public SignUpModal signUpModal { get; set; }
}
然后在类中更改这一行Parameter:
public List<SignUpModal> messageArguments { get; set; }
对此:
public List<MessageArgument> messageArguments { get; set; }
TA贡献1795条经验 获得超7个赞
看起来您使用了错误的类生成器。我已将您的 json 复制到jsonutils,它为我提供了这个模型:
public class SignUpModal
{
public int Id { get; set; }
public object FirstName { get; set; }
public object LastName { get; set; }
public object UserName { get; set; }
public string Email { get; set; }
public object RoleId { get; set; }
public string Password { get; set; }
public object IsActive { get; set; }
public object SecretKey { get; set; }
public object Token { get; set; }
public object Role { get; set; }
public object RolePermissions { get; set; }
public object ImagePath { get; set; }
public object CurrentDate { get; set; }
}
public class MessageArgument
{
[JsonProperty("signUpModal")]
public SignUpModal SignUpModal { get; set; }
}
public class Parameter
{
[JsonProperty("messageFormat")]
public string MessageFormat { get; set; }
[JsonProperty("messageArguments")]
public IList<MessageArgument> MessageArguments { get; set; }
}
请注意,此代码生成器允许您通过添加JsonProperty属性为属性设置 PascalCase
现在,如果您反序列化您的输入,您将看到非空Email和Password:
var input = "{\r\n \"messageFormat\": \"JSON\",\r\n \"messageArguments\": [\r\n {\r\n \"signUpModal\": {\r\n \"Id\": 0,\r\n \"FirstName\": null,\r\n \"LastName\": null,\r\n \"UserName\": null,\r\n \"Email\": \"<email address>\",\r\n \"RoleId\": null,\r\n \"Password\": \"<password>\",\r\n \"IsActive\": null,\r\n \"SecretKey\": null,\r\n \"Token\": null,\r\n \"Role\": null,\r\n \"RolePermissions\": null,\r\n \"ImagePath\": null,\r\n \"CurrentDate\": null\r\n }\r\n }\r\n ]\r\n}";
var result = JsonConvert.DeserializeObject<Parameter>(input);
Console.WriteLine(result.MessageArguments.First().SignUpModal.Email); // will print "<email address>"
TA贡献2065条经验 获得超13个赞
正如 Matt Burland 指出的那样,问题在于messageArguments. 如果您还使用 Robert Harvey 提供的资源,您还会发现所创建的对象结构有所不同。
Parameter应该由
public string messageFormat { get; set; }
public List<MessageArgument> messageArguments { get; set; }
你还需要一个
{
public SignUpModal signUpModal { get; set; }
}
- 4 回答
- 0 关注
- 120 浏览
添加回答
举报