#c# #json #class #serialization #json.net
#c# #json #класс #сериализация #json.net
Вопрос:
У меня есть строка JSON, которую я хочу десериализовать в объекте C #
JSON — это массив объектов с пятью одинаковыми объектами без имен.
Когда я пытаюсь выполнить десериализацию с помощью команды:
JsonConvert.DeserializeObject<List<Model.AuxilioEmergencial>>(restResponse.Content);
Я получаю список с пятью объектами, но все они равны нулю: Печать отладчика Visual Studio
взгляните в JSON:
[
{
"id": 1,
"mesDisponibilizacao": "06/2020",
"beneficiario":
{
"nis": "123",
"nome": "JONI MITCHELL",
"multiploCadastro": false,
"cpfFormatado": "***.862.400-**"
},
"responsavelAuxilioEmergencial":
{
"nis": "123",
"nome": "JONI MITCHELL",
"nomeSemAcento": "JONI MITCHELL",
"cpfFormatado": "***.862.400-**"
},
"municipio":
{
"codigoIBGE": "123",
"nomeIBGE": "LAST TIME I SAW RICHARD",
"nomeIBGEsemAcento": "LAST TIME I SAW RICHARD",
"pais": "BRASIL",
"uf":
{
"sigla": "RS",
"nome": "RIO GRANDE DO SUL"
}
},
"valor": 10
},
{
"id": 2,
"mesDisponibilizacao": "06/2020",
"beneficiario":
{
"nis": "123",
"nome": "JONI MITCHELL",
"multiploCadastro": false,
"cpfFormatado": "***.862.400-**"
},
"responsavelAuxilioEmergencial":
{
"nis": "123",
"nome": "JONI MITCHELL",
"nomeSemAcento": "JONI MITCHELL",
"cpfFormatado": "***.862.400-**"
},
"municipio":
{
"codigoIBGE": "123",
"nomeIBGE": "LAST TIME I SAW RICHARD",
"nomeIBGEsemAcento": "LAST TIME I SAW RICHARD",
"pais": "BRASIL",
"uf":
{
"sigla": "RS",
"nome": "RIO GRANDE DO SUL"
}
},
"valor": 10
},
{
"id": 3,
"mesDisponibilizacao": "06/2020",
"beneficiario":
{
"nis": "123",
"nome": "JONI MITCHELL",
"multiploCadastro": false,
"cpfFormatado": "***.862.400-**"
},
"responsavelAuxilioEmergencial":
{
"nis": "123",
"nome": "JONI MITCHELL",
"nomeSemAcento": "JONI MITCHELL",
"cpfFormatado": "***.862.400-**"
},
"municipio":
{
"codigoIBGE": "123",
"nomeIBGE": "LAST TIME I SAW RICHARD",
"nomeIBGEsemAcento": "LAST TIME I SAW RICHARD",
"pais": "BRASIL",
"uf":
{
"sigla": "RS",
"nome": "RIO GRANDE DO SUL"
}
},
"valor": 40
},
{
"id": 4,
"mesDisponibilizacao": "06/2020",
"beneficiario":
{
"nis": "123",
"nome": "JONI MITCHELL",
"multiploCadastro": false,
"cpfFormatado": "***.862.400-**"
},
"responsavelAuxilioEmergencial":
{
"nis": "123",
"nome": "JONI MITCHELL",
"nomeSemAcento": "JONI MITCHELL",
"cpfFormatado": "***.862.400-**"
},
"municipio":
{
"codigoIBGE": "123",
"nomeIBGE": "LAST TIME I SAW RICHARD",
"nomeIBGEsemAcento": "LAST TIME I SAW RICHARD",
"pais": "BRASIL",
"uf":
{
"sigla": "RS",
"nome": "RIO GRANDE DO SUL"
}
},
"valor": 40
},
{
"id": 5,
"mesDisponibilizacao": "06/2020",
"beneficiario":
{
"nis": "123",
"nome": "JONI MITCHELL",
"multiploCadastro": false,
"cpfFormatado": "***.862.400-**"
},
"responsavelAuxilioEmergencial":
{
"nis": "123",
"nome": "JONI MITCHELL",
"nomeSemAcento": "JONI MITCHELL",
"cpfFormatado": "***.862.400-**"
},
"municipio":
{
"codigoIBGE": "123",
"nomeIBGE": "LAST TIME I SAW RICHARD",
"nomeIBGEsemAcento": "LAST TIME I SAW RICHARD",
"pais": "BRASIL",
"uf":
{
"sigla": "RS",
"nome": "RIO GRANDE DO SUL"
}
},
"valor": 50
}
]
и мой класс C #
[public class AuxilioEmergencial
{
public Auxilio[] auxilio { get; set; }
}
public class Auxilio
{
public int id { get; set; }
public string mesDisponibilizacao { get; set; }
public Beneficiario beneficiario { get; set; }
public Responsavelauxilioemergencial responsavelAuxilioEmergencial { get; set; }
public DadosMunicipio municipio { get; set; }
public float valor { get; set; }
}
public class Beneficiario
{
public string nis { get; set; }
public string nome { get; set; }
public bool multiploCadastro { get; set; }
public string cpfFormatado { get; set; }
}
public class Responsavelauxilioemergencial
{
public string nis { get; set; }
public string nome { get; set; }
public string nomeSemAcento { get; set; }
public string cpfFormatado { get; set; }
}
public class DadosMunicipio
{
public string codigoIBGE { get; set; }
public string nomeIBGE { get; set; }
public string nomeIBGEsemAcento { get; set; }
public string pais { get; set; }
public UF uf { get; set; }
}
public class UF
{
public string sigla { get; set; }
public string nome { get; set; }
}]
Ответ №1:
Когда вы делаете
JsonConvert.DeserializeObject<List<Model.AuxilioEmergencial>>(restResponse.Content);
Вы сообщаете десериализатору, что вам нужен a List
, где каждый элемент имеет тип AuxilioEmergencial
.
Ваш класс AuxilioEmergencial
имеет 1 свойство auxilio
, что означает, что каждый объект в массиве JSON должен обладать этим свойством для правильной десериализации. Например.:
[
{
"auxilio": {
"id ": 1,
"mesDisponibilizacao": "06/2020",
...
}
},
{
"auxilio": {
...
}
}
]
На самом деле вы хотите:
JsonConvert.DeserializeObject<List<Model.Auxilio>>(restResponse.Content);
Комментарии:
1. Я чувствую себя немного глупо, хахаха, но большое вам спасибо!! Это сработало 🙂