2013-11-02 31 views
6

Sto sperimentando con il formato JSON e non sono sicuro di come usarlo per strutturare un albero genealogico. Questo è quello che ho (per mantenere la semplicità sto solo elencando il padre, i suoi figli e se quei bambini hanno figli stessi. Non ho elencato i nomi dei coniugi).Come creare una struttura ad albero familiare in formato JSON

{ 
    "Name": "Jonathan Smith", 
    "Children": [ 
     { 
      "name": "Adam", 
      "Children": [ 
       { 
        "name": "Suzy", 
        "children": "" 
       }, 
       { 
        "name": "Clare", 
        "children": "" 
       }, 
       { 
        "name": "Aaron", 
        "children": "" 
       }, 
       { 
        "name": "Simon", 
        "children": "" 
       } 
      ] 
     }, 
     { 
      "name": "Timmy", 
      "Children": "" 
     }, 
     { 
      "name": "Alison", 
      "Children": [ 
       { 
        "name": "Natasha", 
        "children": "" 
       }, 
       { 
        "name": "Zak", 
        "children": "" 
       } 
      ] 
     } 
    ] 
} 

Anche se, è valida fino, non sono sicuro se questo modo migliore di farlo (vale a dire è il mio approccio DRY e scalabile per esempio).

+3

Identificate le persone con il loro nome. Un nome non è unico, quindi questa è una cattiva struttura. Gli ID sono più adatti a quei casi in cui è richiesta l'unicità. – ComFreek

+0

Questi dati saranno qualcosa che _users_ digiterà o creerà? – Bulkan

+1

@Bulkan No. Sono i dati che sto creando. – Andy

risposta

4

Modo più semplice:

{ 
    "Jonathan Smith": { 
     "Adam": { 
      "Suzy": {}, 
      "Clare": {}, 
      "Aaron": {}, 
      "Simon": {} 
     }, 
     "Timmy": {}, 
     "Alison": { 
      "Natasha": {}, "Zak": {} 
     } 
    } 
} 

Più potente struttura:

{ 
    "Smiths": { 
     "Jonathan Smith": { "id": 0}, 
     "Adam Smith": { "id": 1, "father": 0 }, 
     "Suzy Smith": { "id": 4, "father": 1 }, 
     "Clare Smith": { "id": 5, "father": 1 }, 
     "Aaron Smith": { "id": 6, "father": 1 }, 
     "Simon Smith": { "id": 7, "father": 1 }, 
     "Timmy Smith": { "id": 2, "father": 0 }, 
     "Alison Smith": { "id":3, "father": 0 }, 
     "Natasha Smith": { "id": 8, "father": 3 }, 
     "Zak Smith": { "id": 9, "father": 3 } 
    } 
} 

aggiungere ulteriori relazioni, madre, marito e moglie.

{ 
    "Smiths": { 
     "Jonathan Smith": { "id": 0, "wife": [10]}, 
     "Suzan Smith": { "id": 10, "born": "Suzan Jones", "husband": [0] }, 
     "Adam Smith": { "id": 1, "father": 0, "mother": 10 }, 
     "Suzy Smith": { "id": 4, "father": 1 }, 
     "Clare Smith": { "id": 5, "father": 1 }, 
     "Aaron Smith": { "id": 6, "father": 1 }, 
     "Simon Smith": { "id": 7, "father": 1 }, 
     "Timmy Smith": { "id": 2, "father": 0, "mother": 10 }, 
     "Alison Smith": { "id":3, "father": 0, "mother": 10 }, 
     "Natasha Smith": { "id": 8, "father": 3 }, 
     "Zak Smith": { "id": 9, "father": 3 } 
    } 
} 

A volte è molto più facile lavorare con JSON utilizzando Javascript

var familyTree = {} 
familyTree["Dick Jones"] = { id: 1234, father: 213 } 

Questo vi permetterà di aggiungere, eliminare, funzioni d'uso, essere in grado di verificare la presenza di errori, e poi basta ottenere il risultato JSON chiamando:

JSON.stringify(familyTree) 
0

si deve prestare attenzione perché il formato dati json si aggiunge un override. Prova ad usare una struttura che ti permetta di rispondere alla query che vuoi fare in un modo semplice.

0

Prova questo:

{'name': 'John'}, {'name': 'Jack', 'child_of': 'John'}, {'name': 'Charlie', 'child_of': 'Jack', 'grand_child_of': 'John'} 
0

Lavorare con alberi può essere difficile in JSON, ma forse è possibile utilizzare il concetto di livelli (generazioni in questo esempio) in modo da poter conoscere gli zii, cugini, ecc

[ 
    { 
     "id":100, 
     "name":"Jhon Smith", 
     "generation":1, 
     "children":[ 
     { 
      "id":101, 
      "name":"Michael Smith", 
      "generation":2, 
      "children":null 
     }, 
     { 
      "id":102, 
      "name":"Diana Smith", 
      "children":[ 
       { 
        "id":301, 
        "name":"Britney Smith", 
        "generation":3, 
        "children":null 
       } 
      ] 
     } 
     ] 
    }, 
    { 
     "id":200, 
     "name":"Richard Smith", 
     "generation":1, 
     "children":[ 
     { 
      "id":101, 
      "name":"Michael Smith", 
      "generation":2, 
      "children":null 
     }, 
     { 
      "id":102, 
      "name":"Diana Smith", 
      "generation":2, 
      "children":null 
     } 
     ] 
    } 
] 
Problemi correlati