反序列化json newtonsoft会将对象中的所有内容保留为null C#

反序列化json newtonsoft会将对象中的所有内容保留为null C#,c#,json,C#,Json,您好,我有以下问题,我尝试用newtonsoft库反序列化json,行如下 Tramite body = JsonConvert.DeserializeObject < Tramite> (JsonBody); 这就是目标: 克拉斯·克塞里佐: public int id { get; set; } public string processInstanceId { get; set; } Dictionary<string,

您好,我有以下问题,我尝试用newtonsoft库反序列化json,行如下

Tramite body = JsonConvert.DeserializeObject < Tramite> (JsonBody);
这就是目标:

克拉斯·克塞里佐:

        public int id { get; set; }
        public string processInstanceId { get; set; }
        Dictionary<string, string> tipoTramite { get; set; }
        Dictionary<string, string> canal { get; set; }
        public DefinicionTramite definicionTramite { get; set; }
        public Institucion institucion { get; set; }
        public int idDepartamento { get; set; }
        public int idArea { get; set; }
        public Estado estado { get; set; }
        public string cve { get; set; }
        public string numeroSolicitud { get; set; }
        public double tarifa { get; set; }
        Dictionary<string, string> rut { get; set; }
        Dictionary<string, string> rutEmpresa { get; set; }
        public string nombre { get; set; }
        public bool flagPagado { get; set; }
        public string fechaCreacion { get; set; }
        public string fechaModificacion { get; set; }
        public List<DatosTramite> datosTramite { get; set; }
        public string deploymenId { get; set; }
        public string processId { get; set; }
        public string solicitante { get; set; }
        public string contribuyente { get; set; }
        public string keyConfiguracion { get; set; }
班级研究所

public int id { get; set; }
public string idInstitucionBase { get; set; }
public string tipoInstitucion { get; set; }
public string nombre { get; set; }
public string codigo { get; set; }
public string direccion { get; set; }
public string logoWeb { get; set; }
public string logoPdf { get; set; }
public string telefonoFijo { get; set; }
public string email { get; set; }
public string propietario { get; set; }
类Estado

    public int id { get; set; }
    public DefinicionTramite definicionTramite { get; set; }
    public string codigo { get; set; }
    public string nombre { get; set; }
达托斯岩类

       public int id { get; set; }
       public string key { get; set; }
       public string tipo { get; set; }
       public string data { get; set; }
这些都是我发送的json反序列化过程中涉及的类,我试图反序列化数据集,但由于其中包含的类,它也无法实现(根据我在stackoverflow问题中阅读的内容)如果有人知道我不好,或者有其他方法在C#中反序列化json,这对我很有帮助

JsonConvert.DeserializeObject<Rootobject>(json)
您需要查看JSON并确定主体是一个数组和一个根。因此,必须有一个根类,其body作为数组。创建它,然后反序列化。这必须起作用

首先,您的C#模型与您的JSON不完全相同。例如,主类中的tipoTramite和Json对象是不同的。第二,这里所有内容都为null的原因是,您正在json中发送一个对象数组,但在服务器级别,您正在反序列化该对象。您可以执行以下操作之一:

1.将JSON作为对象发送,而不是像下面那样作为数组发送,那么您的代码应该可以正常工作

{
   "body":{
         "id":3772,
         "processInstanceId":"1416",
         ...
         ...
         ...
}
2.如果您不想更改json,那么对于反序列化,您必须创建一个包含Tramite类型数组的类,然后使用该类来反序列化json:

public class TramiteJsonModel{
    public Tramite[] Body {get;set;}
}
现在使用下面的代码反序列化内容:

TramiteJsonModel body = JsonConvert.DeserializeObject <TramiteJsonModel> (JsonBody);
tramiteJSONModelBody=JsonConvert.DeserializeObject(JsonBody);

如果按原样将JSON放入序列化程序,请注意第二行:
“body”:[
。您的目标类不需要这样的属性。您可能希望反序列化该数组的内容。如果您不确定如何根据json创建类,只需复制json,然后打开VS,转到编辑-->粘贴特殊-->单击“将json粘贴为类”。我建议下次开始。这是一个没有任何属性的代码转储解释,不是特别有用。有很多(大)类。我认为如果你只解释根对象会更好,它包含
Body
的数组,而不添加其他类(包括
Body
的内容)。否则你不知道那里是否有变化(你没有提到任何东西)此外,它只是比解决方案所需的文本多得多。否则答案是正确的。至少描述一下您是如何提出这个解决方案的。它是将JSON粘贴为类的吗?还有其他的吗?
{
   "body":{
         "id":3772,
         "processInstanceId":"1416",
         ...
         ...
         ...
}
public class TramiteJsonModel{
    public Tramite[] Body {get;set;}
}
TramiteJsonModel body = JsonConvert.DeserializeObject <TramiteJsonModel> (JsonBody);