C# 反序列化JSON数据
我目前正在尝试解析一些JSON数据。这是我得到的JSON字符串的格式:C# 反序列化JSON数据,c#,json,json.net,C#,Json,Json.net,我目前正在尝试解析一些JSON数据。这是我得到的JSON字符串的格式: { "messageFormat": "JSON", "messageArguments": [ { "signUpModal": { "Id": 0, "FirstName": null, "LastName": null, "UserName": null, "Email": "<email address&
{
"messageFormat": "JSON",
"messageArguments": [
{
"signUpModal": {
"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
}
}
]
}
{
“messageFormat”:“JSON”,
“messageArguments”:[
{
“注册模式”:{
“Id”:0,
“FirstName”:空,
“LastName”:空,
“用户名”:空,
“电子邮件”:“,
“RoleId”:空,
“密码”:“,
“IsActive”:空,
“SecretKey”:空,
“令牌”:空,
“角色”:空,
“角色权限”:空,
“ImagePath”:空,
“当前日期”:空
}
}
]
}
我创建了两个类来匹配此数据结构:
public class Parameter
{
public string messageFormat { get; set; }
public List<SignUpModal> messageArguments { 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; }
}
公共类参数
{
公共字符串messageFormat{get;set;}
公共列表消息参数{get;set;}
}
公共类注册模式
{
公共int?Id{get;set;}
公共字符串名{get;set;}
公共字符串LastName{get;set;}
公共字符串用户名{get;set;}
公共字符串电子邮件{get;set;}
公共int?RoleId{get;set;}
公共字符串密码{get;set;}
公共bool?IsActive{get;set;}
public int?SecretKey{get;set;}
公共字符串标记{get;set;}
公共字符串角色{get;set;}
公共字符串角色权限{get;set;}
公共字符串ImagePath{get;set;}
公共字符串CurrentDate{get;set;}
}
现在,当我使用var param=JsonConvert.DeserializeObject(tempData)时代码>没有错误,并且MessageFormat
字段正确显示“JSON”。MessageArguments
字段还包含SignUpModal
类的实例,但是SignUpModal
类中的所有字段都是null
我尝试过以各种方式修改类结构,但是数据甚至不会反序列化。我不确定messageArguments
字段的数据没有被正确提取的原因。任何帮助/建议都将不胜感激。您错过了一节课。将此类添加到模型中:
public class MessageArgument
{
public SignUpModal signUpModal { get; set; }
}
然后在参数
类中更改此行:
public List<SignUpModal> messageArguments { get; set; }
public List messageArguments{get;set;}
为此:
public List<MessageArgument> messageArguments { get; set; }
public List messageArguments{get;set;}
您缺少一个类。将此类添加到模型中:
public class MessageArgument
{
public SignUpModal signUpModal { get; set; }
}
然后在参数
类中更改此行:
public List<SignUpModal> messageArguments { get; set; }
public List messageArguments{get;set;}
为此:
public List<MessageArgument> messageArguments { get; set; }
public List messageArguments{get;set;}
合同不匹配。您应该将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
}]
}
{
“messageFormat”:“JSON”,
“messageArguments”:[
{
“Id”:0,
“FirstName”:空,
“LastName”:空,
“用户名”:空,
“电子邮件”:“,
“RoleId”:空,
“密码”:“,
“IsActive”:空,
“SecretKey”:空,
“令牌”:空,
“角色”:空,
“角色权限”:空,
“ImagePath”:空,
“当前日期”:空
}]
}
或者改变实体
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; }
}
公共类参数
{
公共字符串messageFormat{get;set;}
公共列表消息参数{get;set;}
}
类消息参数{
公共注册模式注册模式{get;set;}
}
公共类注册模式
{
公共int?Id{get;set;}
公共字符串名{get;set;}
公共字符串LastName{get;set;}
公共字符串用户名{get;set;}
公共字符串电子邮件{get;set;}
公共int?RoleId{get;set;}
公共字符串密码{get;set;}
公共bool?IsActive{get;set;}
public int?SecretKey{get;set;}
公共字符串标记{get;set;}
公共字符串角色{get;set;}
公共字符串角色权限{get;set;}
公共字符串ImagePath{get;set;}
公共字符串CurrentDate{get;set;}
}
合同不匹配。您应该将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
}]
}
{
“messageFormat”:“JSON”,
“messageArguments”:[
{
“Id”:0,
“FirstName”:空,
“LastName”:空,
“用户名”:空,
“电子邮件”:“,
“RoleId”:空,
“密码”:“,
“IsActive”:空,
“SecretKey”:空,
“令牌”:空,
“角色”:空,
“角色权限”:空,
“ImagePath”:空,
“当前日期”:空
}]
}
或者改变实体
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; }
}
公共类参数
{
公共字符串messageFormat{get;set;}
公共列表消息参数{get;set;}
}
类消息参数{
公共注册模式注册模式{get;set;}
}
公共类注册模式
{
公共int?Id{get;set;}
公共字符串名{get;set;}
公共字符串LastName{get;set;}
公共字符串用户名{get;set;}
公共字符串电子邮件{get;set;}
公共int?RoleId{get;set;}
公共字符串密码{get;set;}
公共bool?IsActive{get;set;}
public int?SecretKey{get;set;}
公共字符串标记{get;set;}
公共字符串角色{get;set;}
公共字符串角色权限{get;set;}
公共字符串ImagePath{get;set;}
公共字符串CurrentDate{get;set;}
}
正如马特·伯兰(Matt Burland)所指出的,问题在于消息参数。
如果您也使用Robert Harvey提供的资源,那么您还可以看到所创建的对象结构中的差异
参数
应包括
public string messageFormat { get; set; }
public List<MessageArgument> messageArguments { get; set; }
正如Matt Burland指出的,问题在于messageArguments
。
如果您也使用Robert Harvey提供的资源,那么您还可以看到所创建的对象结构中的差异
参数
应包括
public string messageFormat { get; set; }
public List<MessageArgument> messageArguments { get; set; }
看起来您使用了错误的类生成器。我已将您的json复制到,它给出了我的以下模型:
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; }
}
看起来您使用了错误的类生成器。我已将您的json复制到,它给出了我的以下模型:
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; }
}
数组messageArguments
中的对象不是SignUpMod