Tôi được giao nhiệm vụ xác định giao tiếp giữa hai ứng dụng web. Tôi đã quyết định sử dụng JSON cho việc này. Làm thế nào phổ biến là nó có một nút gốc trong JSON?Các nút gốc trong JSON
Giả sử chúng tôi có đối tượng ô tô. Đây là JSON với "xe" là nút gốc:
{"Car": {
"Make":"Mustang",
"YearBuilt":"1999"}}
Vì vậy, bây giờ hãy nói rằng tôi có một đối tượng lốp và vì chúng ta đang tiêu chuẩn hóa trên có nút gốc, chương trình này cũng phải có nó.
{"Tire": {"Make": "Brirdgestone", "Size":"15"}}
Lồng ghép đối tượng lốp JSON vào đối tượng Ô tô ban đầu cho thấy mức độ khó sử dụng của nó.
{"Car": { "Make":"Mustang",
"YearBuilt":"1999",
"Tires": "[{"Tire": {"Make": "Brirdgestone", "Size":"15"}},
{"Tire": {"Make": "Brirdgestone", "Size":"15"}},
{"Tire": {"Make": "Bridgestone", "Size":"15"}},
{"Tire": {"Make": "Brirdgestone", "Size":"15"}}
]}}
Vì vậy, được tuần tự hóa trong PHP, việc chế tạo Lốp xe đầu tiên sẽ là $object->Car->Tires[0]->Tire->Make
. Có thêm cấp độ lốp ở đó vì nút gốc.
Nếu lốp không có nút gốc thì mã có thể mỏng hơn rất nhiều.
{"Car": { "Make":"Mustang",
"YearBuilt":"1999",
"Tires": "[{ {"Make": "Bridgestone", "Size":"15"}},
{"Make": "Brirdgestone", "Size":"15"}},
{"Make": "Brirdgestone", "Size":"15"}},
{"Make": "Brirdgestone", "Size":"15"}}]}}
Trong PHP, có ít sự nhầm lẫn vì có ít dư thừa: Các làm từ lốp xe đầu tiên được gọi bởi $object->Car->Tires[0]->Make
Có điều gì xấu bởi không có một nút gốc? Tôi thích có nút gốc vì nó hoạt động giống như một tên lớp, nhưng mức độ không cần thiết sẽ làm tôi rất nhiều và sẽ làm cho việc duyệt web trở nên phức tạp hơn.
Tôi đồng ý. Các nút gốc sẽ chỉ làm cho mã ứng dụng tiêu thụ không cần thiết tiết lộ chi tiết. – Steve
Tuyệt vời, cảm ơn rất nhiều. Tôi nghĩ về một khu vực nơi nó sẽ là quan trọng. Nếu các gương JSON và tài liệu XML, bạn nên thêm ít nhất một đối tượng chính vì trong XML, bạn cần một phần tử gốc. Một đồng nghiệp cũng chỉ ra rằng điều quan trọng đối với các cuộc gọi lại JSONP và sẽ là cấu trúc tốt hơn nếu tôi tạo một API. Ví dụ, Yahoo và ebay API bọc mọi thứ xung quanh một nút ResultSet. Điều này cho phép các trình phân tích cú pháp quan tâm đến các kiểu để liên kết ResultSet với một kiểu đối tượng. –
Vâng, tôi chắc chắn bạn có thể nghĩ về UseCases nơi nó có thể có ích, nhưng sau đó một lần nữa, bất cứ khi nào tôi sử dụng JSON trong các ứng dụng của tôi, tôi đã gọi lại cách biết cách xử lý dữ liệu mà họ nhận được, ví dụ: example.com/cars/find/id/123 sẽ trả về dữ liệu ô tô và cuộc gọi lại của tôi sẽ tạo chúng. – Gordon