JSON xem dữ liệu của bạn dưới dạng cấu trúc được biết đến từ ngôn ngữ lập trình: bản đồ/từ điển (được gọi là 'đối tượng' trong JSON), mảng và chữ. JSON đặt các cấu trúc cơ bản này vào các cấu trúc phân cấp.
XML cũng là phân cấp, nhưng nó có ba phần cơ bản: phần tử (với thẻ bắt đầu/kết thúc), thuộc tính trong phần tử và nội dung văn bản. Các yếu tố và nội dung văn bản có thể được trộn lẫn, vì vậy nó phù hợp để đánh dấu tài liệu. JSON không phải là rất tốt cho việc này.
XML có hệ sinh thái rất lớn được xây dựng xung quanh nó với nhiều công cụ sẵn sàng: các lược đồ khác nhau để kiểm tra xem tài liệu XML của bạn có hợp lệ, ngôn ngữ chuyển đổi, XPath để điều hướng tài liệu của bạn hay không.
XML phức tạp hơn nhiều so với JSON. Thật dễ dàng và thú vị khi viết trình phân tích cú pháp JSON của riêng bạn, nhưng việc viết trình phân tích cú pháp XML là huge undertaking (chắc chắn không phải cho ai đó mới sử dụng XML). Trong Javascript, JSON có thể được phân tích cú pháp bằng cách đánh giá văn bản (điều này là khá không an toàn).
Nếu bạn cần chuyển dữ liệu giữa hai hệ thống, JSON là tốt cho việc này. Nếu bạn muốn sử dụng các thuộc tính nâng cao hơn từ XML (các thực thể, bao gồm tự động các tài liệu, lược đồ, các giá trị thuộc tính ngầm, vv), hoặc trộn nội dung và đánh dấu, XML sẽ làm việc tốt hơn cho bạn.
Nguồn
2009-07-12 20:45:43
Chúng ta đều đã trả lời câu hỏi giả định rằng bạn đang đi để được nói chuyện JSON hay XML với một số loại khách hàng. Nếu bạn không (ví dụ: bạn sẽ chuyển sang HTML sản phẩm như ứng dụng PHP "bình thường") thì bạn sẽ không sử dụng một trong hai loại này. Hoặc bạn đang nói về việc tuần tự hóa ở phía máy chủ (ví dụ: đối với tệp) ... ??? –
Tôi đã nói rằng tôi sẽ thao tác dữ liệu với PHP, tôi không biết tại sao tất cả đều bị nhầm lẫn và nói về phía khách hàng. Máy chủ có một số dữ liệu (được tải xuống từ đâu đó) và sẽ thao tác nó bằng PHP, cái nào dễ hơn. Dữ liệu có kích thước nhỏ nhưng cấu trúc rất phức tạp, vì vậy tôi muốn thao tác đơn giản nhất (Json hoặc XML ??) –
JSON và XML là các định dạng bạn sẽ sử dụng để lấy dữ liệu ra hoặc vào bộ xử lý PHP. Trong PHP, bạn sẽ sử dụng các đối tượng PHP thẳng. Nhà cung cấp dữ liệu có buộc bạn phải chọn giữa hai định dạng này không? Nếu không, bạn sẽ sử dụng tuần tự hóa đối tượng PHP hoặc một cơ sở dữ liệu, có lẽ. –