user2096909 user2096909 - 4 months ago 26
JSON Question

Change the data class name in JSON

I need to generate a Json like the one below, with the data class name "Resposta" for each node, so I am using JavaScriptSerializer.

{"Status":"1",
"Descricao":"OK",
"Respostas":[
{"Resposta":
{
"Campanha":"353896",
"Telefone":"71987588216",
"Data":"20/06/2017 23:40:00",
"mensagem":"Nao posso falar agora. Envie um SMS."
}
},
{"Resposta":
{
"Campanha":"355117",
"Telefone":"14998538703",
"Data":"20/06/2017 23:39:00",
" mensagem ":"Estou dirigindo"
}
}
]}


My C# classes are:

public class retornoRespostas
{
public string Status { get; set; }
public string Descricao { get; set; }
public List<Resposta> Respostas { get; set; }
}

public class Resposta
{
public string Campanha { get; set; }
public string Telefone { get; set; }
public string Data { get; set; }
public string mensagem { get; set; }
}


The result using my code are:

{"Status":"1",
"Descricao":"OK",
"Resposta":[
{
"Campanha":"333967",
"Data":"14/07/2017 11:58:00",
"Telefone":"21999214958",
"mensagem":"Nao posso falar agora. Manda um SMS, por favor?"
},
{
"Campanha":"333967",
"Telefone":"21999214958",
"Data":"14/07/2017 11:59:00",
"mensagem":"Nao posso falar agora. Manda um SMS, por favor?"
}
]}


There are another way to put the name "Resposta" to each data class?

Thanks!

Answer Source

Something like below should work:

public class retornoRespostas
{
    public string Status { get; set; }
    public string Descricao { get; set; }
    public List<RespostaWrapper> Respostas { get; set; }
}

public class RespostaWrapper
{
    public Resposta Resposta { get; set; }
}

public class Resposta
{
    public string Campanha { get; set; }
    public string Telefone { get; set; }
    public string Data { get; set; }
    public string mensagem { get; set; }
}

I would not recommend this approach (I prefer your original JSON structure), but it will result in your desired JSON format.