Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 反序列化JSON数据_C#_Json_Json.net - Fatal编程技术网

C# 反序列化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&

我目前正在尝试解析一些JSON数据。这是我得到的JSON字符串的格式:

{
  "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