es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Es posible duplicar intencionalmente entradas en un archivo JSON?

Estoy implementando un nuevo sistema de informes en mi empresa. La transferencia de datos desde el ERP al software generador de informes se maneja con una matriz JSON temporal.

Dentro del generador de informes puedo manipular los datos con C#. Actualmente estoy trabajando en un nuevo informe para nuestras etiquetas de envío. A veces (no siempre, sigue el pseudocódigo) necesito imprimir varias etiquetas del mismo tipo.

Creo que la forma más fácil de lograr esto sería iterar a través de la matriz y duplicar las entradas según mi lógica. Podría poner este código en el “DoBeforeYouPrint” Void de mi informe y debería obtener la cantidad deseada de etiquetas.

Los datos se ven así (simplificados)

{
    "CustomerID": "1337",
    "ArticleName": "Strawberry",
    "DeliveryWeek": "45",
    "PackagingCount": "50"
}

Pseudocódigo:
“`
x = PackagingCount
y = Número de filas extra (etiquetas)

foreach (Entry in DataSource) {

if x < 48 then
{
y = Math.Ceiling(x / 12)
}

else if x >= 48 then
{
y = Math.Ceiling(x / 60)
}

else if x > 840 then
{
y = 14
}

for (i = 1 to y)
{
Duplicate(Entry);
}

}

Necesito ayuda con una función que hará la duplicación de la fila y copiará toda la información en una fila nueva e idéntica directamente debajo de la fila original.

¿Es esto posible en absoluto con matrices JSON? No soy un verdadero programador, trabajo en un invernadero.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Como experto en TI especializado en C# y JSON, estoy aquí para ayudarte con la implementación de tu sistema de informes. Es posible lograr la duplicación de filas en una matriz JSON utilizando C#. Como has mencionado, puedes iterar a través de la matriz y duplicar las entradas de acuerdo a tu lógica en el DoBeforeYouPrint del informe.

    Para duplicar una fila, puedes crear un nuevo objeto con las mismas propiedades y valores que el objeto original utilizando la clase JObject en el espacio de nombres Newtonsoft.Json.Linq. Aquí tienes un ejemplo:

    JArray jsonArray = JArray.Parse(jsonString); // Suponiendo que jsonString contiene tus datos JSON
    
    foreach (JObject entry in jsonArray)
    {
        int packagingCount = (int)entry["PackagingCount"];
        int numberOfDuplicates = 0;
    
        // Tu lógica para determinar el número de duplicados va aquí (por ejemplo, y = Math.Ceiling(x / 12))
    
        for (int i = 0; i < numberOfDuplicates; i++)
        {
            JObject duplicateEntry = new JObject(entry); // Crea un nuevo objeto con las mismas propiedades y valores que el objeto original
            jsonArray.Add(duplicateEntry); // Añade el nuevo objeto al final de la matriz JSON
        }
    }
    
    string modifiedJsonString = jsonArray.ToString();
    

    Este código creará nuevos objetos JSON con las mismas propiedades y valores que los objetos originales y los agregará al final de la JArray. El método ToString en el objeto JArray devolverá tus datos JSON modificados.

    ¡Espero que esto te ayude! Avísame si tienes más preguntas.

Comments are closed.