none
json anidado RRS feed

Respuestas

Todas las respuestas

  • hola

    porque datatable? no es buena idea

    crea clases que representen a las entidades de tu negocio y despues usas json.net para serializar a json

     Cómo usar JSON en .NET fácilmente con C#

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 29 de abril de 2020 15:50
  • Hola Leandro,

    no sé por qué dices que no es buena idea.

    quizás no me expresé bien al final logré resolverlo.

    gracias.

    namespace Pedidos
    {
        public class jsonCabecera
        {
            public string NumPedidoCab { get; set; }
            public string CodigoClienteCab { get; set; }
            public string CodigoClienteFacturaCab { get; set; }
            public string FechaPedidoCab { get; set; }
            public string CodigoComercialCab { get; set; }
            public string PedidoClienteCab { get; set; }
            public string TipoPedidoCab { get; set; }
            public string TipoPruebaCab { get; set; }
            public string FechaAceptacionCab { get; set; }
            public string ObservacionesCab { get; set; }
            public string FechaFabricacionCab { get; set; }
            public string FechaSalidaAcordadaCab { get; set; }
            public string EmpresaCab { get; set; }
            public string TransaccionCab { get; set; }
            public string FechaTransCab { get; set; }
            public string HomologacionCab { get; set; }
            public jsonAgrupacion Agrupacion { get; set; }
        }
        public class jsonAgrupacion
        {
            public string NumPedidoAgr { get; set; }
            public string AgrupacionAgr { get; set; }
            public string GfhPrincipalAgr { get; set; }
            public string NumPasadasAgr { get; set; }
            public string CodigoEtiquetaBaseAgr { get; set; }
            public string TotalEtiquetasAgr { get; set; }
            public string NumColoresAgr { get; set; }
            public string NumLacasAgr { get; set; }
            public string HorasLaboratorioAgr { get; set; }
            public string NumFotolitosAgr { get; set; }
            public string CosteGfhExternoAgr { get; set; }
            public string CosteFabricacionMillAgr { get; set; }
            public string Por1Agr { get; set; }
            public string Por2Agr { get; set; }
            public string Por3Agr { get; set; }
            public string Por4Agr { get; set; }
            public string PrecioVentaAgr { get; set; }
            public string FechaSalidaAcordadaAgr { get; set; }
            public string AnchoBandaAgr { get; set; }
            public string TiradaAgr { get; set; }
            public string NumColSerAgr { get; set; }
            public string ModelosPliegoAgr { get; set; }
            public string NumColFleAgr { get; set; }
            public string TiradaJustaAgr { get; set; }
            public string TipoTiradaAgr { get; set; }
            public string TransaccionAgr { get; set; }
            public string FechaTransAgr { get; set; }
            public string EmpresaAgr { get; set; }
            public string VersionDocumentoAgr { get; set; }
            public List<jsonLineas> Lineas { get; set; }
            public List<jsonCambios> Cambios { get; set; }
        }

        public class jsonLineas
        {
            public string NumPedidoLin { get; set; }
            public string AgrupacionLin { get; set; }
            public string CodigoEtiquetaLin { get; set; }
            public string CantidadEtiquetasLin { get; set; }
            public string LineaLin { get; set; }
            public string ParcialLin { get; set; }
            public string TransaccionLin { get; set; }
            public string FechaTransLin { get; set; }
            public string PrecioVentaLin { get; set; }
            public string EmpresaLin { get; set; }
            public string VersionDocumentoLin { get; set; }
            public string VersionEtiquetaLin { get; set; }
            public string StockLin { get; set; }
            public string NumeracionDesdeLin { get; set; }
            public string NumeracionHastaLin { get; set; }
        }

        public class jsonCambios
        {
            public string NumPedidoCam { get; set; }
            public string AgrupacionCam { get; set; }
            public string CodigoCambioCam { get; set; }
            public string NumCambiosCam { get; set; }
            public string TransaccionCam { get; set; }
            public string FechaTransCam { get; set; }
            public string VersionDocumentoCam { get; set; }
            public string CodigoGfhCam { get; set; }
        }
    }

    foreach (DataRow row in dtPresu.Rows)
                    {
                        // cabecera
                        jsonCabecera jsonCabecera = new jsonCabecera
                        {
                            NumPedidoCab = txtPedido.Text + row[0].ToString(),
                            CodigoClienteCab = txtCodigoCliente.Text,
                            CodigoClienteFacturaCab = txtClienteFactura.Text,
                            FechaPedidoCab = txtFechaPedido.Text,
                            CodigoComercialCab = txtCodigoComercial.Text,
                            PedidoClienteCab = txtPedidoCliente.Text,
                            TipoPedidoCab = tipoPedido,
                            TipoPruebaCab = tipoPrueba,
                            FechaAceptacionCab = txtFechaAceptacion.Text,
                            ObservacionesCab = txtComentarios.Text,
                            FechaFabricacionCab = txtFechaFabricacion.Text,
                            FechaSalidaAcordadaCab = txtFechaSalida.Text,
                            EmpresaCab = Session["empresa"].ToString(),
                            //TransaccionCab = 
                            FechaTransCab = string.Format("{0:yyyy-MM-dd HH:mm:ss}", DateTime.Now),
                            HomologacionCab = homologacion,
                            // Agrupacion
                            Agrupacion = new jsonAgrupacion
                            {
                                NumPedidoAgr = txtPedido.Text + row[0].ToString(),
                                AgrupacionAgr = row[0].ToString(),
                                GfhPrincipalAgr = row[1].ToString(),
                                NumPasadasAgr = row[2].ToString(),
                                CodigoEtiquetaBaseAgr = row[3].ToString(),
                                TotalEtiquetasAgr = row[5].ToString(),
                                NumColoresAgr = row[9].ToString(),
                                NumLacasAgr = row[16].ToString(),
                                HorasLaboratorioAgr = row[13].ToString(),
                                NumFotolitosAgr = row[15].ToString(),
                                CosteGfhExternoAgr = row[12].ToString(),
                                CosteFabricacionMillAgr = row[6].ToString(),
                                Por1Agr = por1.Value,
                                Por2Agr = por2.Value,
                                Por3Agr = por3.Value,
                                Por4Agr = por4.Value,
                                PrecioVentaAgr = row[7].ToString(),
                                FechaSalidaAcordadaAgr = txtFechaSalida.Text,
                                AnchoBandaAgr = row[17].ToString(),
                                //TiradaAgr,
                                NumColSerAgr = row[10].ToString(),
                                ModelosPliegoAgr = row[14].ToString(),
                                NumColFleAgr = row[11].ToString(),
                                TiradaJustaAgr = formulaRow["CONMATERIALSINMERMAS"].ToString(),
                                TipoTiradaAgr = tipoTirada,
                                //TransaccionAgr,
                                FechaTransAgr = string.Format("{0:yyyy-MM-dd HH:mm:ss}", DateTime.Now),
                                EmpresaAgr = Session["empresa"].ToString(),
                                VersionDocumentoAgr = (Convert.ToInt16(row[18]) + 1).ToString(),

    //esto era lo que no sabía hacer

                                Lineas = getLineas(row),
                                Cambios = getCambios(row)
                            }                       
                        };
                        string archivo = JsonConvert.SerializeObject(jsonCabecera, Formatting.Indented);
                        string ruta = @"c:\pedidos\" + jsonCabecera.NumPedidoCab + ".json";                    
                        File.WriteAllText(ruta, archivo);
                        break;
                    }

    private List<jsonLineas> getLineas(DataRow row)
            {
                List<jsonLineas> lineasRes = new List<jsonLineas>();
                foreach (DataRow row2 in dtLineas.Rows)
                {
                    if (row[0].ToString() == row2[0].ToString())
                    {
                        jsonLineas Lineas = new jsonLineas
                        {
                            NumPedidoLin = txtPedido.Text + row2[0].ToString(),
                            AgrupacionLin = row2[0].ToString(),
                            CodigoEtiquetaLin = row2[1].ToString(),
                            CantidadEtiquetasLin = row2[4].ToString(),
                            LineaLin = (dtLineas.Rows.IndexOf(row2) + 1).ToString(),
                            ParcialLin = row2[6].ToString(),
                            //TransaccionLin,
                            FechaTransLin = string.Format("{0:yyyy-MM-dd HH:mm:ss}", DateTime.Now),
                            PrecioVentaLin = row2[5].ToString(),
                            EmpresaLin = Session["empresa"].ToString(),
                            //VersionDocumentoLin = 
                            VersionEtiquetaLin = row2[3].ToString(),
                            StockLin = row2[7].ToString()
                            //NumeracionDesdeLin = ,
                            //NumeracionHastaLin = 
                        };
                        lineasRes.Add(Lineas);
                    }
                }
                return lineasRes;
            }
            private List<jsonCambios> getCambios(DataRow row)
            {
                List<jsonCambios> cambiosRes = new List<jsonCambios>();
                foreach (DataRow row3 in dtCambios.Rows)
                {
                    if (row[0].ToString() == row3[3].ToString())
                    {
                        jsonCambios Cambios = new jsonCambios
                        {
                            NumPedidoCam = txtPedido.Text + row3[3].ToString(),
                            AgrupacionCam = row3[3].ToString(),
                            CodigoCambioCam = row3[0].ToString(),
                            NumCambiosCam = row3[1].ToString(),
                            //TransaccionCam
                            FechaTransCam = string.Format("{0:yyyy-MM-dd HH:mm:ss}", DateTime.Now),
                            //VersionDocumentoCam
                            CodigoGfhCam = row3[5].ToString()
                        };
                        cambiosRes.Add(Cambios);
                    }
                }
                return cambiosRes;
            }


    • Editado Equipoc lunes, 4 de mayo de 2020 10:52
    lunes, 4 de mayo de 2020 10:50