2013-11-02 17 views
6

Tôi đang thử nghiệm với định dạng JSON và không chắc chắn cách sử dụng cấu trúc cây gia đình để cấu trúc cây gia đình. Đây là những gì tôi đã có (để giữ cho nó đơn giản chỉ liệt kê cha, con cái của mình và cho dù những đứa trẻ có bất kỳ trẻ em mình. Tôi đã không được liệt kê tên của vợ chồng).Cách tạo cấu trúc cây gia đình ở định dạng 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": "" 
       } 
      ] 
     } 
    ] 
} 

Mặc dù, nó xác nhận tốt, tôi không chắc chắn nếu đó là cách tốt nhất để làm việc đó (ví dụ là cách tiếp cận của tôi khô và khả năng mở rộng ví dụ).

+3

Bạn xác định người bằng tên của họ. Tên không phải là duy nhất, do đó đây là một cấu trúc xấu. ID phù hợp hơn với những trường hợp như vậy, nơi tính duy nhất là bắt buộc. – ComFreek

+0

Dữ liệu này có phải là thứ gì đó mà _users_ nhập hoặc tạo không? – Bulkan

+1

@Bulkan No. Đó là dữ liệu tôi đang tạo. – Andy

Trả lời

4

cách đơn giản nhất:

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

cấu trúc mạnh mẽ hơn:

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

Thêm quan hệ, mẹ, chồng và vợ.

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

Đôi khi nó là dễ dàng hơn để làm việc với JSON sử dụng Javascript

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

này sẽ cho phép bạn thêm, xóa, chức năng sử dụng, có khả năng kiểm tra lỗi, và sau đó chỉ nhận được kết quả JSON bằng cách gọi:

JSON.stringify(familyTree) 
0

bạn phải chú ý vì dữ liệu json định dạng mà bạn thêm ghi đè. Hãy thử sử dụng một cấu trúc cho phép bạn trả lời truy vấn bạn muốn thực hiện một cách đơn giản.

0

Hãy thử điều này:

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

Làm việc với cây có thể khó khăn trong JSON nhưng có lẽ bạn có thể sử dụng các khái niệm về mức độ (thế hệ trong ví dụ này), do đó bạn có thể biết về các chú bác, anh em họ, vv

[ 
    { 
     "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 
     } 
     ] 
    } 
] 
Các vấn đề liên quan