Stack Overflow em Português Asked by Renan Souza on February 17, 2021
Estou tentando fazer a leitura de um simples arquivo em json que vai possuir o caminho para alguns arquivos de audio. Nada complicado. Segue abaixo o json:
{
"audioSetup": {
"buttonNumpad1AudioFile": "C:\Users\mypc\Downloads\Musica 1.mp3",
"buttonNumpad2AudioFile": "C:\Users\mypc\Downloads\Musica 2.mp3",
"buttonNumpad3AudioFile": "C:\Users\mypc\Downloads\Musica 3.mp3",
}
}
Estou usando o seguinte codigo para realizar a leitura do arquivo json:
public static class Json
{
public static AudioSetup LoadAudioSetup()
{
using (StreamReader streamReader = File.OpenText(@"....audioSetup.json"))
{
string json = streamReader.ReadToEnd();
AudioSetup audioSetup = JsonConvert.DeserializeObject<AudioSetup>(json);
return audioSetup;
}
}
}
Além disso eu criei uma classe para usar o DeserializeObject:
public class AudioSetup {
public string buttonNumpad1AudioFile { get; set; }
public string buttonNumpad2AudioFile { get; set; }
public string buttonNumpad3AudioFile { get; set; }
}
Os dados lidos pelo StreamReader estão todos certos. O problema está dentro da instancia que ele cria depois do JsonConvert.DeserializeObject(json) vem com as propriedades com valor null
.
Ja tentei varias formas de fazer isso e todas resultam nas propriedades com valor null
.
Simplesmente não consigo ler os valores dentro de audioSetup.buttonbuttonNumpad1AudioFile ou as outras duas propriedades por eles estarem sempre null depois do processo de deserialização.
Podem me dar uma ajuda com isso?
Seu JSON é um objeto que tem um membro que é um objeto com outros 3 membros, então você tem duas opções, mude seu JSON para
{
"buttonNumpad1AudioFile": "C:\Users\mypc\Downloads\Musica 1.mp3",
"buttonNumpad2AudioFile": "C:\Users\mypc\Downloads\Musica 2.mp3",
"buttonNumpad3AudioFile": "C:\Users\mypc\Downloads\Musica 3.mp3",
}
ou crie duas classes sendo que uma tem uma propriedade do tipo da outra, por exemplo
public class AudioSetup
{
public string buttonNumpad1AudioFile { get; set; }
public string buttonNumpad2AudioFile { get; set; }
public string buttonNumpad3AudioFile { get; set; }
}
public class ContainerAudioSetup
{
AudioSetup audioSetup {get; set;}
}
Correct answer by Vitor Luiz Rubio on February 17, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP