0

Para explicar mejor mi problema tengo este JSON:

{
"Person": [
    {
        "Id":1, 
        "Type":1,
        "Extra":
            [{
                "Number":88888888,
                "Code":506
            }]
        ,
        "Personal":{
            "Name":"Mario"
        }   
    },
     {
        "Id":1, 
        "Type":1,
        "Extra":
            [{
                "Number":88888888,
                "Code":506
            }]
        ,
        "Personal":{
            "Name":"Mario"
        }   
    }
    ] 
}

Yo necesito que un JSON tenga varias "Person" como algo asi:

{
"Person": [
    {
        "Id":1, 
        "Type":1,
        "Extra":
            [{
                "Number":88888888,
                "Code":506
            }]
        ,
        "Personal":{
            "Name":"Mario"
        }   
    },
     {
        "Id":1, 
        "Type":1,
        "Extra":
            [{
                "Number":88888888,
                "Code":506
            }]
        ,
        "Personal":{
            "Name":"Mario"
        }   
    }
    ],

{
"Person": [
    {
        "Id":1, 
        "Type":1,
        "Extra":
            [{
                "Number":88888888,
                "Code":506
            }]
        ,
        "Personal":{
            "Name":"Mario"
        }   
    },
     {
        "Id":1, 
        "Type":1,
        "Extra":
            [{
                "Number":88888888,
                "Code":506
            }]
        ,
        "Personal":{
            "Name":"Mario"
        }   
    }
    ] 
}
}

Pero al parecer no es tan sencillo como ponerle solo una coma... alguien podria por favor darme un ejemplo y explicarme como se haria en esos casos?

Gracias!

java005
  • 157
  • 1
  • 4
  • 16

3 Answers3

5

Tu JSON está mal estructurado, por lo que se puede ver tu objeto Person tiene un array de objetos. en tu forma de intentar aplicarlo, agregas un Person dentro de tu Person raiz dejando el objeto algo así:

Person{
    [ {Objeto identificador},{Objeto identificador} ],
    Person { ... }
}

Lo que puedes hacer es un array de Person desde el comienzo de tu JSON, quedando algo así (Nota como el JSON comienza como array y el siguiente Person se agrega al cerrar el primer Person):

[{
    "Person": [{
        "Id": 1,
        "Type": 1,
        "Extra": [{
            "Number": 88888888,
            "Code": 506
        }],
        "Personal": {
            "Name": "Mario"
        }
    },
    {
        "Id": 1,
        "Type": 1,
        "Extra": [{
            "Number": 88888888,
            "Code": 506
        }],
        "Personal": {
            "Name": "Mario"
        }
    }]
},
{
    "Person": [{
        "Id": 1,
        "Type": 1,
        "Extra": [{
            "Number": 88888888,
            "Code": 506
        }],
        "Personal": {
            "Name": "Mario"
        }
    },
    {
        "Id": 1,
        "Type": 1,
        "Extra": [{
            "Number": 88888888,
            "Code": 506
        }],
        "Personal": {
            "Name": "Mario"
        }
    }]
}]
Killbunny
  • 1,387
  • 6
  • 21
1

Te explico primero como es que funcionan los JSON.

Dentro del formato de intercambio de datos JSON existen dos estructuras principales: listas/arreglos, y objetos.

La listas o arreglos están compuestas/os por diferentes objetos. Y los objetos almacenan los pares compuestos por llave/valor para definir información dentro de ellos.

Ahora si. Teniendo en cuenta la información anterior, si lo que quieres es difinir diferentes objetos de tipo person lo que tienes que hacer es definir todos esas personas dentro de una lista/arreglo. De esa manera podrás acceder a cada persona mediante su indice (así es como se manejan las listas/arreglos; el indice comienza a partir del número 0).

¿Cómo quedaría la estructura? Bueno, esta va a cambiar de acuerdo a la información que deseas manejar, pero teniendo en cuenta las estructuras que colocaste como ejemplo, lo más adecuado sería considerar estructuras con la siguiente forma:

[
    {
        "Id":1, 
        "Type":1,
        "Extra":
            [{
                "Number":88888888,
                "Code":506
            }]
        ,
        "Personal":{
            "Name":"Mario"
        }   
    },
    {
        "Id":2, 
        "Type":1,
        "Extra":
            [{
                "Number":88888888,
                "Code":506
            }]
        ,
        "Personal":{
            "Name": "Otro Mario"
        }   
    }
]

Observa como dentro de la lista/arreglo [] se colocan todos los objetos {}, que para este caso en específico representan personas.

Por último, si de verdad quieres asignar un nombre al arreglo, puedes declarar la estructura JSON de la siguiente manera:

{
  "Persons": [
    {
      "Extra": [
        {
          "Code": 506, 
          "Number": 88888888
        }
      ], 
      "Id": 1, 
      "Personal": {
        "Name": "Mario"
      }, 
      "Type": 1
    }, 
    {
      "Extra": [
        {
          "Code": 506, 
          "Number": 88888888
        }
      ], 
      "Id": 1, 
      "Personal": {
        "Name": "Mario"
      }, 
      "Type": 1
    }
  ]
}
codenoschool
  • 171
  • 1
  • 1
  • 10
  • MAESTRO! Muchas gracias por la explicacion! Soy nuevo en esto y de verdad necesito entregar eso pero no solo queria saber la solucion sino tambien el porque y como funciona y lo hiciste a la perfeccion! Me quedo sumamente claro!! – java005 Sep 10 '18 at 14:43
0

Imagino que lo que quieres es algo como esto:

{
    "Persons": [{
        "Person": {
            "Id": 1,
            "Type": 1,
            "Extra": [{
                "Number": 88888888,
                "Code": 506
            }],
            "Personal": {
                "Name": "Mario"
            }
        }
    }, {
        "Person": {
            "Id": 2,
            "Type": 2,
            "Extra": [{
                "Number": 88888888,
                "Code": 506
            }],
            "Personal": {
                "Name": "Carla"
            }
        }
    }]
}

Puedes probar tu JSON en esta página

Javi Mollá
  • 1,438
  • 1
  • 6
  • 9