C# code to get a new Json unifying child items

  • Thread starter Thread starter diegodamage82
  • Start date Start date
D

diegodamage82

Guest
Hi.

I have the following response from Sql stored procedure

1545965.jpg

I get this json

[
{
"idMedioDePago": 6,
"medioDePago": "Tarjeta Credito (PayU)",
"Franquicia": [
{
"id": 1,
"nombre": "Visa"
}
]
},
{
"idMedioDePago": 6,
"medioDePago": "Tarjeta Credito (PayU)",
"Franquicia": [
{
"id": 2,
"nombre": "Master Card"
}
]
},
{
"idMedioDePago": 6,
"medioDePago": "Tarjeta Credito (PayU)",
"Franquicia": [
{
"id": 3,
"nombre": "American Express"
}
]
},
{
"idMedioDePago": 7,
"medioDePago": "Pago Presencial",
"MedioDePagoPresencial": [
{
"id": 1,
"nombre": "Efecty"
}
]
},
{
"idMedioDePago": 7,
"medioDePago": "Pago Presencial",
"MedioDePagoPresencial": [
{
"id": 2,
"nombre": "Baloto"
}
]
},
{
"idMedioDePago": 7,
"medioDePago": "Pago Presencial",
"MedioDePagoPresencial": [
{
"id": 3,
"nombre": "Banco de Bogota"
}
]
},
{
"idMedioDePago": 7,
"medioDePago": "Pago Presencial",
"MedioDePagoPresencial": [
{
"id": 4,
"nombre": "Bancolombia"
}
]
},
{
"idMedioDePago": 8,
"medioDePago": "Tarjeta Debito (PSE)"
}
]

I get the upper json with the next code in c#:

var mediosdepago = _context.RespuestaMedioDePagoDB.FromSqlRaw("EXECUTE Sp_ObtenerMedioDePago @IdCanalDePago={0}, @IdPais={1}", idCanalDePago, idPais).ToList();

List<RespuestaMedioDePago> listRespuestaMedioDePago = new List<RespuestaMedioDePago>();

mediosdepago.ForEach(o =>
{
RespuestaMedioDePago objRespuestaMedioDePago = new RespuestaMedioDePago();
objRespuestaMedioDePago.idMedioDePago = o.IdMedioDePago;
objRespuestaMedioDePago.medioDePago = o.MedioDePago;


if (o.IdFranquicia != null)
{
Franquicia_MedioDePago objFranquicia_MedioDePago = new Franquicia_MedioDePago();
objFranquicia_MedioDePago.id = o.IdFranquicia;
objFranquicia_MedioDePago.nombre = o.Franquicia;
objRespuestaMedioDePago.Franquicia.Add(objFranquicia_MedioDePago);
}

if (o.IdMedioDePagoPresencial != null)
{
MedioDePagoPresencial_MedioDePago objMedioDePagoPresencial_MedioDePago = new MedioDePagoPresencial_MedioDePago();
objMedioDePagoPresencial_MedioDePago.id = o.IdMedioDePagoPresencial;
objMedioDePagoPresencial_MedioDePago.nombre = o.MedioDePagoPresencial;
objRespuestaMedioDePago.MedioDePagoPresencial.Add(objMedioDePagoPresencial_MedioDePago);
}

listRespuestaMedioDePago.Add(objRespuestaMedioDePago);
});

return JsonConvert.SerializeObject(listRespuestaMedioDePago, Formatting.Indented);

But I need the next Json:

[
{
"idMedioDePago": 6,
"medioDePago": "Tarjeta Credito (PayU)",
"Franquicia": [
{
"id": 1,
"nombre": "Visa"
},
{
"id": 2,
"nombre": "Master Card"
},
{
"id": 3,
"nombre": "American Express"
}
]
}

{
"idMedioDePago": 7,
"medioDePago": "Pago Presencial",
"MedioDePagoPresencial": [
{
"id": 1,
"nombre": "Efecty"
},
{
"id": 2,
"nombre": "Baloto"
},
{
"id": 3,
"nombre": "Banco de Bogota"
},
{
"id": 4,
"nombre": "Bancolombia"
}
]
},
{
"idMedioDePago": 8,
"medioDePago": "Tarjeta Debito (PSE)"
}
]


How can I do the conversion to unify the childs items? What could I do to fix the C# code?

Thanks in advance.

Continue reading...
 
Back
Top