2009-07-12 45 views
29

Tôi đang thao tác vài dữ liệu với PHP, tôi có sự lựa chọn giữa Json và XML. Nhưng tôi không biết phải chọn gì, tôi chưa bao giờ làm việc với một trong số họ. Vì vậy, tôi muốn cái dễ nhất.Điều gì tốt hơn: Json hoặc XML (PHP)

Ngoài ra tôi tự hỏi nếu có các lớp học tốt có thể làm cho phân tích cú pháp (XML hoặc Json) dễ dàng hơn.

Tôi tập trung chủ yếu vào tính dễ sử dụng hơn là tốc độ và tỷ lệ.

+0

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) ... ??? –

+0

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 ??) –

+1

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ẽ. –

Trả lời

37

json.org làm cho JSON phân tích cú pháp đơn giản. SimpleXML làm cho XML trở nên đơn giản cho PHP.

Khi chọn cái nào, nó thực sự phụ thuộc vào ứng dụng của bạn. Nếu bạn sẽ chuyển dữ liệu đến JavaScript để xử lý ở phía máy khách, thì tôi khuyên bạn nên sử dụng JSON. IMO, XML là tốt hơn cho trao đổi dữ liệu giữa các hệ thống bởi vì nó được hiểu rất rõ và có thể đọc được bằng con người (làm cho việc diễn giải dễ dàng hơn cho bạn). JSON nhỏ hơn dây, vì không có thẻ đóng.

+2

giống như tôi đã nói. 1 cho "nó thực sự phụ thuộc" –

+7

Tôi đồng ý với "nó phụ thuộc", nhưng tôi không nghĩ rằng xml có bất kỳ khả năng đọc cạnh wrt so với json; chúng gần giống nhau. Lợi ích kích thước JSON tồn tại, nhưng thường không quan trọng lắm: nếu kích thước không thành vấn đề, dữ liệu gzipping làm cho chúng có cùng kích thước (cùng nội dung thông tin, v.v.). Cá nhân tôi sẽ chọn dựa trên các công cụ (dễ sử dụng), nhưng không thể nhận xét được PHP. Đối với Java có rất nhiều công cụ cho cả hai, tôi cho rằng điều này cũng đúng với PHP. – StaxMan

+0

Đọc bài viết này: http://www.edwardawebb.com/tips/xml-json đó là nhiều hơn về mạng nhưng cũng một phần cũng áp dụng cho việc phân tích cú pháp. –

1

Nếu bạn chọn sử dụng XML SimpleXML, cực kỳ đơn giản để sử dụng thư viện

1

Nếu bạn đã không được sử dụng một trong hai, sau đó đi cho JSON. Các câu trả lời cho đến nay là chính xác trong đó có rất nhiều trợ giúp cho cả hai và bạn sẽ nhận được và chạy trên hoặc là khá nhanh chóng. JSON có thêm lợi thế là ít cồng kềnh hơn XML và có thể dễ dàng được 'dịch' sang javascript khi trên máy khách

0

Có một số (có lẽ một mặt) JSON và các bài viết XML ở cuối trang json.org .

Đây là one.

Tôi thường thích JSON vì nó phù hợp hơn với dữ liệu tôi thường đại diện, trong dòng công việc của tôi sẽ là những thứ như đỉnh, mắt lưới, v.v. Tùy thuộc vào dữ liệu XML của bạn có thể là định dạng tốt.

1

tôi sử dụng JSON với PHP vì cách đơn giản nó là:

$arr = array('foo' => 'bar', 'animals' => array('cat', 'dog')); // Create any array. 
$json = json_encode($arr); // Converts any array to JSON. 
+1

bạn không thể chuyển đổi một mảng thành XML ?? –

+3

hoàn toàn. xml_encode ($ var, false, "foo"); trong đó $ var là mảng, sai để không hiển thị id refs và "foo" là tên của XML Root. http://www.projectzero.org/sMash/1.0.x/docs/apidocs/PHP/xapidoc/XMLExtension/xml_encode.html –

3

Một điều cần xem xét là, ít nhất là trên tải về, sự khác biệt về kích thước giữa XML và JSON (XML là lớn hơn) không phải là thực sự thú vị vì bạn sẽ sử dụng tính năng nén GZIP qua HTTP.

Nếu bạn chắc chắn rằng bạn sẽ làm việc với Javascript và không bao giờ có bất kỳ loại khách hàng nào khác (trang web khác, ứng dụng Flash/Flex, bất kỳ thứ gì) thì JSON rất tuyệt vời và có lẽ hơi ít đau. Mặt khác, việc thực hiện XML giờ đây giúp bạn tiết kiệm thời gian nếu bạn cần phải làm việc với XML.

Dù sao, điều tốt cần làm là kiểm tra những gì các chàng trai Google đang làm bằng cách sử dụng LiveHTTPHeaders cho Gmail hoặc bất kỳ ứng dụng nào của họ. Tôi khá chắc chắn rằng đó là XML chứ không phải JSON, nhưng bạn có thể kiểm tra tôi về điều đó. Trong mọi trường hợp, làm những gì Google có thể được coi là "không suy nghĩ", nhưng họ thường thông minh hơn tôi và có nhiều người hơn nhiều giờ để suy nghĩ anyway :)

+0

sự khác biệt về kích thước ... không thực sự thú vị << Đó là quá trình xử lý. Đối với các tệp lớn (x Gb), nó cũng có thể là một vấn đề. Tôi đã nhìn thấy rất nhiều ứng dụng "thiết kế theo hợp đồng" google XML. Tôi thích XML hơn. –

+0

Hmmm ... vâng, nếu chúng ta đang nói về các tập tin khổng lồ, thế giới trở nên rõ ràng theo kinh nghiệm: bạn phải kiểm tra và chuẩn bị và có được một đầu mối, tôi nghĩ vậy. JSON rõ ràng là nhanh hơn so với demarshalling từ XML ... phải không? –

+1

"" làm những gì Google có thể được coi là "không suy nghĩ", nhưng họ thường thông minh hơn tôi và có nhiều người hơn nhiều giờ để suy nghĩ anyway :) "" không đúng Nó sẽ phụ thuộc vào nhiều thứ, họ không chọn "BEST", họ chọn "BEST ONE FOR GMAIL" –

3

Nó phụ thuộc.

Ví dụ: Bạn muốn đặt ứng dụng của mình vào một ngữ cảnh lớn (EAI), thì bạn nên sử dụng XML (có thể là Webservices & WSDL).

Ví dụ2: Nếu bạn muốn có giao diện người dùng đơn giản, dựa trên javascript và ajax, bạn nên xem xét JSON.

JSON hữu ích nhất khi bạn làm việc với javascript. Trong hầu hết các trường hợp, các thư viện XML dễ sử dụng đến mức dễ sử dụng gần như giống nhau.

4

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.

+0

Không có libs cho các thao tác XML trên cả hai máy khách (về cơ bản là tất cả các máy khách) và các máy chủ (PHP)? –

+1

Daniel, tôi chắc chắn có. Câu trả lời của tôi tập trung nhiều hơn vào "JSON vs XML" hơn trên các thư viện. Tôi thường làm việc với Java và có rất nhiều thư viện cho XML trong thế giới Java. Trong PHP tôi đã sử dụng SimpleXML cho các nhu cầu (đơn giản) của tôi, và nó chỉ hoạt động. –

+0

Hiểu, Peter, tôi đoán tôi đã hỏi làm thế nào mà đoạn 4 làm việc theo cách của mình vào câu trả lời của bạn. Tôi sẽ upvote từ, đọc câu trả lời của bạn một vài lần, tôi nhận ra rằng bạn thực sự chỉ ra một cái gì đó quan trọng: XML có một thế giới toàn bộ (hệ sinh thái như bạn nói): JSON dường như không có điều đó cả. Không phải là người hỏi ... ... :) –

0

Cách dễ nhất để bắt đầu là XML. Lý do chính cho việc này không phải là phân tích cú pháp (vì có rất nhiều libs cho XML và JSON làm điều này cho bạn, xem các bài đăng khác), nhưng dễ hiểu:

JSON hoạt động với nhiều dấu ngoặc đơn khác nhau tại dữ liệu XML của bạn, bạn có thể sẽ thấy bất kỳ lỗi nào nhanh hơn. (Giả sử bạn biết ví dụ: HTML)

Cũng có thể (nhưng tùy chọn) để tạo một XML schema, giúp xác minh dữ liệu của bạn tự động dễ dàng. Điều này có thể giúp bạn tiết kiệm rất nhiều thời gian sau đó!

7

tôi cảm thấy các mục StackOverflow sau trả lời câu hỏi của bạn tốt nhất:

Đối với cái nào là dễ nhất?
jQuery làm cho việc tuần tự hóa các đối tượng JavaScript của bạn thành các đối tượng JSON dễ dàng.

Nhưng, nếu bạn vẫn không chắc chắn ...

Dưới đây là một số điều khác:

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