c# - C# JsonConvert.DeserializeObject 返回一个 json 对象数组的空值
问题描述
我有一个 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; }
}]
解决方案
When you do
JsonConvert.DeserializeObject<List<Model.AuxilioEmergencial>>(restResponse.Content);
You're telling the deserializer that you want a List
, where every element is of type AuxilioEmergencial
.
Your class AuxilioEmergencial
has 1 property auxilio
, which means every object in the JSON array has to have that property to be properly deserialized. E.g.:
[
{
"auxilio": {
"id ": 1,
"mesDisponibilizacao": "06/2020",
...
}
},
{
"auxilio": {
...
}
}
]
What you actually want is:
JsonConvert.DeserializeObject<List<Model.Auxilio>>(restResponse.Content);
推荐阅读
- android - React Native-Switching 选项卡不加载屏幕
- json - 我的代码中有什么错误,如何成功解析 json 中的数据?
- arrays - Golang:检查一个项目是否存在于数组中......然后检查它是否存在于两个不是它的项目之间
- unix - 内存映射中的这些条纹是什么意思?
- configuration - RStudio:使用 Ctrl+箭头跳过单词时忽略空格
- amazon-web-services - 如何修复:Terraform 错误刷新状态:状态快照由 Terraform v0.14.5 创建,比当前 v0.13.0 更新
- laravel - Laravel Excel 导入中是否有限制行功能?
- vector - 将值推入向量后如何继续使用?
- python - 迭代列表中的 2 个元素,但在下一次迭代中重复第二个元素
- javascript - 如何在页面加载时将 react-bootstrap 进度条从 0 设置为 N?