2013-11-02 8 views
6

Ich experimentiere mit dem JSON-Format und bin mir nicht sicher, wie man es benutzt, um einen Stammbaum zu strukturieren. Dies ist, was ich habe (um es einfach zu halten, nenne ich nur den Vater, seine Kinder und ob diese Kinder selbst Kinder haben. Ich habe die Namen der Ehepartner nicht aufgelistet).So erstellen Sie eine Stammbaumstruktur im JSON-Format

{ 
    "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": "" 
       } 
      ] 
     } 
    ] 
} 

Obwohl, es ist bestätigt in Ordnung, ich ist nicht sicher, ob der beste Weg, es zu tun (das heißt ist mein Ansatz DRY und skalierbare zum Beispiel).

+3

Sie identifizieren Menschen mit ihrem Namen. Ein Name ist nicht eindeutig, daher ist dies eine schlechte Struktur. IDs sind besser geeignet für solche Fälle, in denen Eindeutigkeit erforderlich ist. – ComFreek

+0

Werden diese Daten etwas sein, das _users_ eingibt oder erstellt? – Bulkan

+1

@Bulkan Nein. Es sind Daten, die ich erstelle. – Andy

Antwort

4

einfachste Weg:

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

Leistungsfähigere Struktur:

{ 
    "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 } 
    } 
} 

mehr Beziehungen hinzufügen, Mutter, Mann und Frau.

{ 
    "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 } 
    } 
} 

Manchmal ist es viel einfacher, mit JSON arbeiten mit Javascript

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

Diese Sie können hinzufügen, löschen, verwenden Funktionen, der Lage sein, auf Fehler zu überprüfen, und dann bekommen nur die resultierende JSON durch den Aufruf:

JSON.stringify(familyTree) 
0

müssen Sie beachten, da das Format JSON Daten Sie eine Überschreibung hinzufügen. Versuchen Sie, eine Struktur zu verwenden, mit der Sie auf einfache Weise auf die gewünschte Abfrage antworten können.

0

Versuchen Sie folgendes:

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

mit Bäumen Arbeiten können in JSON schwierig sein, aber vielleicht können Sie das Konzept der Ebenen (Generationen in diesem Beispiel) verwenden, so können Sie über den Onkel, Cousins ​​kennen usw.

[ 
    { 
     "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 
     } 
     ] 
    } 
] 
Verwandte Themen