JSON là gì? Cú pháp, Các loại dữ liệu và Ví dụ API

JSON là gì?

API Scraping không bị lược bỏ trả về dữ liệu có cấu trúc từ các nguồn web được hỗ trợ cho các ứng dụng cần kết quả có thể đọc được bởi máy.

JSON là một định dạng văn bản để đại diện cho dữ liệu có cấu trúc. Một đối tượng nhóm các giá trị có tên, trong khi một mảng giữ các giá trị theo thứ tự. Định dạng này nhỏ đủ để xem trong một trình soạn thảo văn bản và chính xác đủ để phần mềm bằng các ngôn ngữ khác nhau có thể trao đổi các cấu trúc cơ bản giống nhau. Tên của nó xuất phát từ JavaScript Object Notation, nhưng JSON là một định dạng dữ liệu chứ không phải là một chương trình JavaScript.

Một phản hồi JSON chỉ hữu ích khi người đọc biết các trường có ý nghĩa gì. Một bản ghi sản phẩm với giá, tiền tệ và tình trạng sẵn có thì cung cấp thông tin tốt hơn một số không có nhãn. Hướng dẫn này giải thích ngữ pháp, cho thấy JSON phù hợp với một trao đổi HTTP như thế nào, và phân tách tính hợp lệ của cú pháp khỏi vấn đề khó khăn hơn về dữ liệu đáng tin cậy.

Cách JSON Đại diện Dữ liệu

JSON có sáu loại giá trị: đối tượng, mảng, chuỗi, số, boolean và null. Đặc tả định dạng JSON xác định ngữ pháp của chúng. Một đối tượng được viết bằng dấu ngoặc nhọn và bao gồm các cặp tên và giá trị. Một mảng được viết bằng dấu ngoặc vuông và chứa một chuỗi các giá trị có thứ tự. Mảng tương tự có thể chứa nhiều loại giá trị JSON, mặc dù sơ đồ ứng dụng có thể áp đặt các quy tắc chặt chẽ hơn.

Chuỗi sử dụng dấu ngoặc kép đôi. Trong một chuỗi, các dấu ngoặc kép, dấu gạch chéo ngược và một số ký tự điều khiển cần được thoát. Các số sử dụng ngữ pháp thập phân; JSON không có cách biểu diễn tích hợp cho các giá trị như vô cực hoặc giá trị JavaScript không xác định. Các từ true, false và null là các hằng chữ viết thường. Một bộ phân tích có thể từ chối một tài liệu chỉ vì một dấu phẩy ở cuối hoặc một tên thuộc tính không có dấu ngoặc kép.

Ví dụ, một đối tượng giả định có thể chứa một chuỗi tiêu đề, một giá trị số, một giá trị boolean inStock, và một mảng các thẻ. Hình dạng bên ngoài cho biết các trường nào di chuyển cùng nhau; các giá trị cho biết những gì đã được quan sát. JSON không quy định một loại tiền tệ, múi giờ, hoặc định nghĩa kinh doanh cho những trường đó. Nhà sản xuất và người tiêu dùng vẫn cần một hợp đồng để mỗi tên có một ý nghĩa ổn định.

Một Tài liệu JSON Có Thể và Không Thể Đảm Bảo

JSON hợp lệ chứng minh rằng văn bản tuân theo ngữ pháp. Nó không chứng minh rằng một trường bắt buộc tồn tại, giá cả hiện tại, hoặc một URL là an toàn để mở. Một trình phân tích có thể chấp nhận một đối tượng mà các trường của nó đều sai cho thao tác hiện tại. Sau khi phân tích, xác minh hình dạng, khoảng giá trị và định danh mong đợi trước khi đưa dữ liệu vào giao diện người dùng hoặc công việc downstream.

Tên đối tượng trùng lặp đặc biệt khó xử. Định dạng mô tả tên trong một đối tượng là lý tưởng duy nhất, nhưng trình phân tích cú pháp có thể xử lý các bản sao khác nhau. Một triển khai có thể giữ lại giá trị cuối cùng trong khi một triển khai khác báo cáo lỗi. Nếu một quyết định an ninh phụ thuộc vào một trường, đừng để hai bản sao xung đột của tên đó yên lặng vượt qua các lớp khác nhau của hệ thống.

JSON cũng không có kiểu dữ liệu ngày tháng, blob nhị phân hoặc khai báo sơ đồ. Các ứng dụng thường mã hóa thời gian dưới dạng chuỗi và nội dung nhị phân thông qua một đại diện đã thỏa thuận, nhưng đó là các quy ước được áp đặt bên trên định dạng cốt lõi. Tài liệu quy ước bên cạnh trường. Nếu không, hai khách hàng có thể phân tích cùng một văn bản một cách thành công nhưng vẫn giải thích nó theo cách khác nhau.

Cách JSON di chuyển qua API

Một API HTTP có thể đặt JSON trong thân yêu cầu, thân phản hồi, hoặc cả hai. Trường Content-Type xác định biểu diễn để người nhận có thể chọn một trình phân tích thích hợp. Quy định ngữ nghĩa HTTP tách biệt siêu dữ liệu tin nhắn khỏi nội dung đang được chuyển giao. Một trạng thái thành công HTTP nói về kết quả của yêu cầu; nội dung phản hồi mô tả tài nguyên hoặc kết quả được trả về.

Một khách hàng nên kiểm tra trạng thái phản hồi và loại phương tiện mong đợi trước khi giả định mọi body là JSON. Các lỗi xác thực, lỗi cổng và trang bảo trì có thể trả về định dạng khác. Chỉ phân tích sau khi xác nhận rằng body nhận được thuộc về thao tác mong đợi. Sau đó, kiểm tra một đường dẫn trường được tài liệu hóa thay vì giả định tất cả các dịch vụ đều gói kết quả trong một thuộc tính gọi là data.

The Giới thiệu về API Scraping không rác mô tả các yêu cầu do diễn viên chọn và đầu ra có cấu trúc. Đó là một ứng dụng cụ thể cho JSON: một ứng dụng gửi một đối tượng đầu vào đã được tài liệu hóa và đọc kết quả cụ thể cho diễn viên. Các diễn viên khác nhau có thể có các trường khác nhau, vì vậy một trình phân tích tổng quát duy nhất có thể giải mã văn bản trong khi một ánh xạ cụ thể cho sản phẩm vẫn phải diễn giải nó.

Đối tượng, Mảng và Giá trị Thiếu

Một đối tượng trả lời một câu hỏi về các thuộc tính được đặt tên; một mảng trả lời một câu hỏi về thứ tự. Một danh sách các kết quả tìm kiếm được đại diện một cách tự nhiên dưới dạng một mảng các đối tượng kết quả, với mỗi đối tượng giữ các trường như tiêu đề và liên kết. Đối tượng phản hồi xung quanh cũng có thể mang theo phân trang hoặc siêu dữ liệu. Việc tách biệt các cấp độ đó giúp dễ dàng hơn trong việc giải thích các trường nào mô tả một kết quả và trường nào mô tả toàn bộ yêu cầu.

Một thuộc tính thiếu không giống như một thuộc tính mà giá trị của nó là null. Thiếu có thể có nghĩa là nhà sản xuất đã bỏ qua một trường; null xuất hiện rõ ràng trong tài liệu. Không trường hợp nào nên tự động được coi là bằng không hoặc một chuỗi trống. Quyết định cách ứng dụng tiêu thụ xử lý từng trường hợp, và thử nghiệm quyết định đó với hợp đồng API thực tế.

Các số cũng cần được chăm sóc tương tự. JSON cung cấp một ngữ pháp cho số, nhưng các ngôn ngữ khác nhau trong cách họ lưu trữ các số nguyên rất lớn và các phân số thập phân. Tiền tệ và các định danh có thể cần một chuỗi được tài liệu hóa hoặc biểu diễn thập phân thay vì một giả định số thực. The Giao diện JSON JavaScript cho thấy các phép toán phân tích và tuần tự quen thuộc, trong khi mô hình dữ liệu vẫn đòi hỏi các quyết định ở cấp ứng dụng.

Xác thực và gỡ lỗi JSON trong thực tế

Bắt đầu với phản hồi thô thay vì hình chụp màn hình những gì mà bảng điều khiển hiển thị. Xác nhận trạng thái, kiểu phương tiện và toàn bộ nội dung. Nếu phân tích không thành công, xác định lỗi cú pháp đầu tiên: một dấu nháy chưa được thoát, một dấu ngoặc đóng bị thiếu, hoặc một dấu phẩy ở cuối thường là đủ. Nếu phân tích thành công nhưng ứng dụng vẫn không hoạt động, kiểm tra đường dẫn và kiểu của trường mà ứng dụng mong đợi.

Viết kiểm tra dựa trên ý nghĩa thay vì chỉ sự tồn tại. Một mảng kết quả có thể tồn tại và rỗng; đó có thể là một kết quả hợp lệ không có kết quả hoặc bằng chứng của một vấn đề truy cập phía trên. Một URL có thể là một chuỗi và vẫn chỉ đến một trang không liên quan. Giữ một tập hợp nhỏ các phản hồi tốt đã biết và trường hợp biên giới như là ví dụ hợp đồng, được đánh dấu rõ ràng như là ví dụ thay vì các bản ghi trực tiếp.

Khi tiếp nhận dữ liệu web công cộng, hãy giữ một liên kết đến bản ghi nguồn và ngữ cảnh quan sát khi quy trình làm việc cần khả năng kiểm tra. Scrapeless Scraping API là một cách để nhận kết quả có cấu trúc từ các nguồn hỗ trợ. Ứng dụng lưu trữ những kết quả đó vẫn nên xác thực lược đồ cụ thể của tác nhân và quyết định cách xử lý các trường thay đổi giữa các mục tiêu.

Khi nào JSON là đại diện đúng đắn

JSON là một sự lựa chọn tốt cho việc trao đổi các bản ghi có cấu trúc có kích thước nhỏ đến vừa giữa các dịch vụ web và khách hàng. Nó có thể đọc được mà không cần công cụ chuyên biệt, và hầu hết các ngôn ngữ đều có các trình phân tích trưởng thành. Điều đó khiến nó thuận tiện cho cấu hình, yêu cầu API và các bản ghi đã trích xuất cần phải đi qua một vài hệ thống. Độ dễ đọc không có nghĩa là con người nên chỉnh sửa payload sản xuất bằng tay.

Đối với xuất khẩu theo dạng bảng, CSV có thể dễ dàng hơn cho bảng tính, mặc dù nó không tự nhiên đại diện cho các cấu trúc lồng nhau. HTML giữ cấu trúc và trình bày của trang nhưng thường cần phải trích xuất trước khi một ứng dụng có thể truy vấn các trường kinh doanh một cách đáng tin cậy. Một định dạng nhị phân có thể giảm kích thước hoặc thêm một lược đồ mạnh mẽ hơn cho lưu lượng nội bộ khối lượng lớn. Chọn theo hình dạng của dữ liệu và các hệ thống tiêu thụ nó.

Một câu hỏi thiết kế hữu ích là liệu người tiêu dùng cần trang gốc hay một bản ghi được chọn. Nếu người tiêu dùng cần tiêu đề sản phẩm và tính khả dụng từ một tác nhân hỗ trợ, JSON có cấu trúc giảm bớt công việc phân tích. Nếu người tiêu dùng cần kiểm tra chính xác đánh dấu đã tạo ra một kết quả, hãy giữ lại hoặc yêu cầu một đại diện trang phù hợp. Liên quan đến Hướng dẫn tác nhân Scraper API minh họa lý do tại sao các bao bì và trường đầu ra phải được đọc từng tác nhân một.

Kết luận

JSON cung cấp một ngữ pháp văn bản chính xác cho việc trao đổi các giá trị có cấu trúc. Nó không cung cấp các quy tắc kinh doanh khiến những giá trị đó đáng tin cậy. Định nghĩa hình dạng mong đợi, kiểm tra các phản hồi API thực tế, và xác thực các trường mà ứng dụng của bạn sử dụng trước khi coi tài liệu đã phân tích là một bản ghi đáng tin cậy.

Biến Dữ liệu Web Có Cấu Trúc Thành Các Bản Ghi Khả Dụng

Khám phá các tác nhân Scraping API đã được tài liệu hóa và ánh xạ các trường mà họ trả về đến lược đồ ứng dụng của bạn.

Đăng ký hôm nay và nhận $5 tín dụng miễn phí — không yêu cầu thẻ tín dụng.

Nhận $5 Tín Dụng của Bạn →

Câu hỏi thường gặp

JSON có giống với JavaScript không?

JSON là một định dạng dữ liệu độc lập ngôn ngữ được lấy cảm hứng từ cú pháp đối tượng JavaScript. JavaScript có thể phân tích và tuần tự hóa JSON, nhưng JSON loại trừ các biểu thức, hàm, nhận xét và giá trị không xác định của JavaScript. Đối xử với JSON đầu vào như dữ liệu để phân tích và xác thực, không phải là mã để thực thi.

Có hay không một tệp JSON có thể chứa hơn một đối tượng?

Một văn bản JSON đơn có thể có một mảng chứa nhiều đối tượng, hoặc một đối tượng chứa các đối tượng lồng nhau. Nó không thể chứa một vài giá trị JSON cấp cao chỉ được đặt cạnh nhau và vẫn là một văn bản JSON tiêu chuẩn. Một định dạng theo dòng riêng biệt đôi khi được sử dụng cho mục đích đó.

JSON hợp lệ có nghĩa là dữ liệu là đúng không?

JSON hợp lệ chỉ có nghĩa là văn bản tuân theo cú pháp JSON. Nội dung có thể không đầy đủ, đã lỗi thời, gây nhầm lẫn hoặc không tương thích với lược đồ tiêu dùng. Kiểm tra các trường cần thiết, kiểu, ngữ cảnh nguồn và quy tắc kinh doanh sau khi phân tích.

Tại sao một API đôi khi trả về HTML thay vì JSON?

Một khách hàng API có thể nhận được HTML khi nó đến một trang web, một thách thức truy cập, hoặc một bề mặt lỗi thay vì phản hồi API dự kiến. Kiểm tra trạng thái HTTP, URL cuối cùng và kiểu phương tiện trước khi phân tích. Một kết nối mạng thành công một mình không xác lập rằng kết quả JSON dự định đã được giao.

Tài liệu tham khảo