2008-09-26 27 views
22

Chúng tôi hiện đang lập kế hoạch một API mới cho một ứng dụng và tranh luận về các định dạng dữ liệu khác nhau mà chúng tôi nên sử dụng để trao đổi. Có một cuộc thảo luận khá mãnh liệt đang diễn ra về các thành tích tương đối của CSV, JSONXML.Các giá trị tương đối của CSV, JSON và XML cho một API REST là gì?

Về cơ bản, mấu chốt của tranh cãi là liệu chúng ta nên ủng hộ CSV ở tất cả vì sự thiếu đệ quy (ví dụ: có một tài liệu trong đó có multiple authorsmultiple references sẽ đòi hỏi multiple API calls để có được tất cả các information).

Trải nghiệm bạn có thể có khi làm việc với thông tin từ Web APIs và những điều chúng tôi có thể làm để giúp các nhà phát triển làm việc với API dễ dàng hơn.


quyết định của chúng tôi:

Chúng tôi đã quyết định cung cấp XMLJSON do sự khó khăn trong việc đệ quy trong CSV cần nhiều cuộc gọi cho một hoạt động hợp lý duy nhất. JSON không có trình phân tích cú pháp trong QtProtocol Buffers dường như không có triển khai thực hiện non-alpha PHP vì vậy chúng cũng hết thời gian nhưng có thể sẽ được hỗ trợ cuối cùng.

+0

Vẻ đẹp của CSV đơn giản. – Ambo100

Trả lời

18

CSV là đúng. JSON là một ký hiệu đối tượng nhỏ gọn hơn XML, vì vậy nếu bạn đang tìm kiếm khối lượng lớn, nó có lợi thế. XML có thâm nhập thị trường rộng hơn (tôi thích cụm từ đó) và được hỗ trợ bởi tất cả các ngôn ngữ lập trình và khung cốt lõi của họ. JSON đang đến đó (nếu chưa có).

Cá nhân, tôi thích các dấu ngoặc vuông. Tôi sẽ đặt cược nhiều devs là thoải mái với làm việc với dữ liệu xml hơn với json.

2

CSV có rất nhiều vấn đề với tư cách là một mô hình dữ liệu phức tạp mà tôi sẽ không sử dụng nó. XML rất linh hoạt và dễ dàng lập trình với - khách hàng sẽ không có vấn đề gì khi mã hóa các trình tạo và trình phân tích cú pháp XML, thậm chí bạn có thể cung cấp các trình phân tích mẫu bằng SAX.

Bạn đã xem định dạng dữ liệu mạng của Google chưa? Nó được gọi là Protocol Buffers. Tuy nhiên, không biết liệu nó có hữu ích cho một dịch vụ REST hay không vì nó bỏ qua toàn bộ lớp HTTP đó.

2

XML đôi khi có thể hơi nặng. JSON là khá tốt, mặc dù, có hỗ trợ ngôn ngữ tốt, và dữ liệu JSON có thể được dịch trực tiếp đến các đối tượng bản địa trên nhiều dạng chơi.

23

Ưu điểm:

  • XML - Rất nhiều thư viện, Devs đã quen thuộc với nó, XSLT, Có thể easiily xác nhận bởi cả client và server (XSD, DTD), Cấu trúc dữ liệu
  • JSON - dễ dàng giải thích về phía khách hàng, ký hiệu gọn nhẹ, Dữ liệu phân cấp
  • CSV - Mở bằng Excel (?)

Nhược điểm:

  • XML - Sình, khó để giải thích trong JavaScript hơn JSON
  • JSON - Nếu sử dụng không đúng có thể gây ra một lỗ hổng bảo mật (không sử dụng eval), Không phải tất cả ngôn ngữ có thư viện để giải thích nó.
  • CSV - Không hỗ trợ dữ liệu phân cấp, bạn sẽ là người duy nhất làm điều đó, thực sự khó hơn hầu hết các nhà phát triển nghĩ phân tích cú pháp tệp csv hợp lệ (giá trị CSV có thể chứa các dòng mới miễn là chúng nằm giữa dấu ngoặc kép, v.v.).

Với điều trên, tôi thậm chí sẽ không bận tâm hỗ trợ CSV. Khách hàng có thể tạo ra nó từ XML hoặc JSON nếu nó thực sự cần thiết.

+0

Trừ khi bạn có trình phân tích cú pháp JSON theo ngôn ngữ bạn chọn thì CSV dễ phân tích cú pháp hơn JSON. –

+2

Có sẵn các trình phân tích cú pháp JSON cho một phạm vi ngôn ngữ rất rộng. Xem phần cuối của http://www.json.org/. – mpdaly

1

Tôi không có bất kỳ trải nghiệm nào với JSON, CSV hoạt động đến một điểm khi dữ liệu của bạn được cấu trúc theo bảng và đồng đều. XML có thể trở nên khó sử dụng rất nhanh, đặc biệt nếu bạn không có một công cụ tạo ra các ràng buộc cho các đối tượng của bạn một cách tự động.

Tôi chưa thử điều này, nhưng Google's Protocol Buffers trông thực sự tốt, định dạng đơn giản, tạo liên kết tự động với C++, Java và Python và triển khai tuần tự hóa và deserialisation của các đối tượng được tạo.

0

Ngoài what Allain Lalonde already said, một lợi thế bổ sung của CSV là nó có xu hướng nhỏ gọn hơn XML hoặc thậm chí JSON. Vì vậy, nếu dữ liệu của bạn là nghiêm ngặt bảng, với trạng thái tuyệt đối hoàn toàn bằng phẳng, CSV có thể là lựa chọn đúng. Những bất lợi của Additonal của CSV là nó có thể sử dụng các dấu phân cách và dấu tách thập phân khác nhau, loại bỏ công cụ nào (và thậm chí cả quốc gia!) Đã tạo ra nó.

Các vấn đề liên quan