Php trích xuất json từ chuỗi

JSON là một trong những định dạng dữ liệu phổ biến trên tất cả các công nghệ. Xử lý JSON với PHP dễ dàng hơn vẻ ngoài của nó. Hầu hết các API sử dụng định dạng JSON để trao đổi dữ liệu. Ví dụ: nếu bạn muốn trích xuất dữ liệu hồ sơ từ Facebook bằng API của Facebook, thì nó sẽ trả về dữ liệu ở định dạng JSON. Không có tùy chọn để bỏ qua JSON

Dữ liệu ở định dạng JSON có thể được đọc và phân tích cú pháp dễ dàng so với các định dạng dữ liệu khác. Có nhiều hàm cốt lõi để xử lý JSON với PHP

Các hàm tích hợp đó được sử dụng để mã hóa, viết, phân tích cú pháp, giải mã và chuyển đổi dữ liệu JSON. Các hàm PHP được xác định trước đó giúp công việc của chúng tôi dễ dàng hơn

JSON là gì?

JSON là một định dạng văn bản trao đổi dữ liệu phổ quát viết tắt của JavaScript Object Notation. Đây là định dạng dữ liệu độc lập với ngôn ngữ

Khả năng đọc của con người và máy đều cao đối với định dạng dữ liệu JSON. Ở dạng này, cấu trúc dữ liệu có thể thuộc 2 dạng cấu trúc là dạng đối tượng hoặc dạng mảng

Đối tượng JSON chứa một mảng kết hợp của “tên. value” trong khi mảng JSON chứa một chuỗi các giá trị với các chỉ mục số mặc định

JSON được phát triển từ ngôn ngữ lập trình JavaScript và ECMAScript. Tiêu chuẩn ECMA-404 chứa thông số kỹ thuật cho cú pháp JSON hợp lệ

Ví dụ về đối tượng và mảng JSON

Trong phần giới thiệu về JSON, chúng tôi đã thấy rằng định dạng có thể thay đổi dựa trên cấu trúc dữ liệu. Chúng ta hãy xem các ví dụ cho hai đối tượng và mảng định dạng JSON này

Ví dụ về Đối tượng JSON hợp lệ

Định dạng đối tượng JSON bao gồm một tập hợp các cặp dữ liệu khóa-giá trị. Cấu trúc bên dưới hiển thị một ví dụ về cấu trúc đối tượng JSON hợp lệ

{
    "FIFA_World_Cup_Winners" : {
        "2018" : "France",
        "2014" : "Germany",
        "2010" : "Spain",
        "2006" : "Italy",
        "2002" : "Brazil"
     }
}

Ví dụ về một mảng JSON

Trong một mảng JSON, chuỗi dữ liệu sẽ được liệt kê trong danh sách có thứ tự. Sẽ không có ánh xạ khóa-giá trị. Ví dụ sau đây cho thấy cấu trúc mảng JSON

{
    "FIFA_Last_Five_Winners" : ["France","Germany","Spain","Italy","Brazil"]
}

Trong ví dụ JSON ở trên, năm quốc gia chiến thắng cuối cùng được liệt kê mà không có chỉ mục rõ ràng. Vì vậy, nó sẽ được coi là một mảng của danh sách các mục được sắp xếp

Mảng JSON sẽ được đặt trong [dấu ngoặc vuông] trong khi các đối tượng JSON được đặt trong {dấu ngoặc nhọn}

Xử lý JSON với PHP bằng cách phân tích dữ liệu tệp

Với tham chiếu đến cấu trúc JSON có thể có, bây giờ chúng ta sẽ xem cách xử lý JSON với PHP để phân tích dữ liệu từ một tệp đầu vào chứa dữ liệu JSON như bên dưới

{
	"FIFA_World_Cup_finals":
	[ 
		{
			"Year": "2018",
			"data": 
			{
				"Winner": "France",
				"Score": "4-2",
				"Runner-up": "Croatia"
			}
		},
	    {
			"Year": "2014",
			"data": 
			{
				"Winner": "Germany",
				"Score": "1-0",
				"Runner-up": "Argentina"
			}
		},
	    {
			"Year": "2010",
			"data": 
			{
				"Winner": "Spain",
				"Score": "1-0",
				"Runner-up": "Netherlands"
			}
		}
	]
}

Chuyển đường dẫn tệp này tới hàm file_get_contents[] của PHP và lưu trữ dữ liệu JSON vào một biến

Vì tệp JSON đầu vào chứa dữ liệu cấu trúc phân cấp đa cấp, chúng ta phải lặp lại đối tượng JSON một cách đệ quy bằng cách sử dụng PHP RecursiveArrayIterator

RecursiveArrayIterator của PHP đơn giản hóa việc triển khai phân tích cú pháp JSON bằng một vài dòng mã như bên dưới. Bạn nên nhận ra và tận dụng sức mạnh của các hàm có sẵn trong PHP

 $val] {
    if[!is_array[$val]] {
        if[$key == "Year"] {
            print "
"; } print $key." : ".$val . "
"; } } ?>

Sau đó, chương trình phân tích cú pháp PHP JSON này sẽ trả về đầu ra sau cho trình duyệt

Cách giải mã JSON thành mảng

Trong hướng dẫn trước, chúng ta đã thấy cách mã hóa-giải mã JSON bằng PHP. Các hàm PHP json_encode và json_decode được sử dụng để thực hiện các hoạt động mã hóa và giải mã tương ứng

Khối mã sau hiển thị cú pháp của hàm json_decode. Hàm này chấp nhận đầu vào chuỗi JSON làm tham số đầu tiên của nó. Ngoài ra, nó chấp nhận một giá trị boolean tùy chọn làm tham số thứ hai

json_decode [ string $json [, bool $assoc = FALSE [, int $depth = 512 [, int $options = 0 ]]] ] : mixed

Bằng cách gửi TRUE cho tham số tùy chọn này, kết quả giải mã sẽ được trả về dưới dạng một mảng thay vì một đối tượng. Giá trị mặc định của tham số này là FALSE như được chỉ định trong cú pháp

Xem xét dữ liệu JSON đầu vào sau. Hãy để chúng tôi xem cách nó được giải mã thành một mảng bằng hàm json_decode[]

";
print_r[$outputArray];
?>

Mảng đầu ra là,

Giải mã JSON thành đối tượng

Theo mặc định, hàm PHP json_decode sẽ chuyển đổi dữ liệu JSON thành một đối tượng. Tham số $assoc của hàm json_decode sẽ buộc định dạng đầu ra dựa trên giá trị boolean được truyền cho nó

Trong ví dụ trên, bằng cách loại bỏ tham số thứ hai, chúng ta có thể nhận được dữ liệu đã giải mã ở dạng đối tượng. Mã chuyển đổi JSON sang đối tượng và đầu ra được hiển thị bên dưới

";
print_r[$outputObject];
?>

Đầu ra chuyển đổi JSON sang đối tượng

Chuyển đổi mảng PHP thành JSON

Để chuyển đổi một mảng PHP sang định dạng JSON, hàm json_encode[] được sử dụng. Đoạn mã sau chỉ định cú pháp của hàm PHP json_encode[]

json_encode [ mixed $value [, int $options = 0 [, int $depth = 512 ]] ] : string

Hàm này chấp nhận đầu vào được mã hóa JSON làm tham số đầu tiên của nó. Nó bắt buộc phải được chỉ định bằng một chuỗi JSON trong khi gọi json_encode để xử lý chuyển đổi dữ liệu

Dưới đây tập lệnh PHP được sử dụng để chuyển đổi một mảng PHP thành định dạng JSON. Trong ví dụ này, tôi đã sử dụng một mảng kết hợp sẽ được gửi đến hàm json_encode

________số 8

Bằng cách chạy chương trình này, dữ liệu JSON được mã hóa sẽ được in trên trình duyệt như hình bên dưới

{ "FIFA_Last_World_Cup_final": { "Year": "2018", "data": { "Winner": "France", "Score": "4-2", "Runner-up": "Croatia" } } }

Ghi chú

  1. Tham số tùy chọn của các hàm mã hóa/giải mã JSON của PHP sẽ chấp nhận các hằng số JSON. Hành vi của hằng số JSON được mô tả trên trang bên ngoài được liên kết
  2. Các hàm mã hóa và giải mã JSON của PHP sẽ hoạt động với các chuỗi có định dạng UTF-8

Đọc JSON qua AJAX và Xử lý

Trong phần này, chúng ta sẽ xem cách xử lý JSON với PHP và AJAX. Tôi đã sử dụng JavaScript để gửi lệnh gọi AJAX tới PHP thông qua yêu cầu HTTP XML

Thêm đoạn mã dưới đây vào trang HTML từ nơi bạn muốn truy cập dữ liệu JSON do PHP trả về

Cuộc gọi lại AJAX sẽ nhận được JSON phản hồi từ điểm cuối PHP. Trong ví dụ này, điểm cuối PHP được chỉ định là URL AJAX của JavaScript bằng cách đặt tham số hành động trong chuỗi truy vấn URL. Nó gọi getJSON. php qua AJAX

{
    "FIFA_Last_Five_Winners" : ["France","Germany","Spain","Italy","Brazil"]
}
0

Đầu ra JSON được trả về được nhận trong cuộc gọi lại onreadystatechange. Dữ liệu đầu ra này được phân tích cú pháp bằng JSON. phương pháp phân tích cú pháp của JavaScript

Trong tập lệnh PHP, dữ liệu JSON được trả về AJAX bằng cách sử dụng câu lệnh in PHP. Trước khi tạo dữ liệu JSON đầu ra, nó kiểm tra xem tham số hành động bắt buộc được gửi qua AJAX có trống không

{
    "FIFA_Last_Five_Winners" : ["France","Germany","Spain","Italy","Brazil"]
}
1

Tập lệnh AJAX này xử lý phản hồi JSON trong chức năng gọi lại thành công. Trong cuộc gọi lại này, dữ liệu JSON đã đọc được sử dụng để cập nhật giao diện người dùng. Đầu ra sẽ được hiển thị bên dưới

Cách truy cập nguồn cấp dữ liệu JSON và dữ liệu hiển thị

Truy cập URL nguồn cấp dữ liệu JSON có thể được thực hiện theo nhiều cách khác nhau. Trong ví dụ trên về phân tích dữ liệu tệp JSON qua PHP, chúng tôi đã sử dụng hàm file_get_contents[]

file_get_contents[] sẽ không hoạt động trên máy chủ do các chỉ thị bảo mật được kích hoạt bằng PHP. cấu hình ini. Vì vậy, chúng ta cũng có thể sử dụng tập lệnh CURL để trích xuất dữ liệu JSON từ URL nguồn cấp dữ liệu từ xa

Ví dụ sau sẽ hướng dẫn cách sử dụng PHP CURL để truy cập JSON feed và hiển thị dữ liệu lên trình duyệt

{
    "FIFA_Last_Five_Winners" : ["France","Germany","Spain","Italy","Brazil"]
}
2

Cách chuyển đổi JSON sang đối tượng JavaScript

Chúng ta đã thấy cách chuyển đổi JSON thành Đối tượng JavaScript trong khi tạo ví dụ về xử lý JSON bằng PHP thông qua AJAX mà không cần jQuery

Trong phần này, chúng ta sẽ xem cách chuyển đổi dữ liệu JSON thành Đối tượng JavaScript. Ngoài ra, chúng ta phải lặp qua mảng Đối tượng Javascript kết quả

Chuyển đổi đối tượng JSON sang JavaScript có thể được thực hiện bằng nhiều cách khác nhau. Giống như trong ví dụ trước, chúng ta có thể làm điều này bằng cách sử dụng JSON có sẵn của JavaScript. phương pháp phân tích []

Sử dụng jQuery $. parseJSON sẽ hỗ trợ chuyển đổi này và làm cho nó hoạt động trong nhiều trình duyệt web lỗi thời. Đoạn mã sau sử dụng jQuery để chuyển đổi chuỗi đầu vào JSON thành Đối tượng JavaScript

{
    "FIFA_Last_Five_Winners" : ["France","Germany","Spain","Italy","Brazil"]
}
3

Bằng cách chạy chương trình này, chúng ta có thể thấy cấu trúc đối tượng JavaScript trong cửa sổ bảng điều khiển của trình duyệt như hình bên dưới

Lặp qua đối tượng JSON bằng Javascript

Đoạn script sau được sử dụng để lặp qua mảng đối tượng Javascript được chuyển đổi từ dữ liệu JSON. Trong ví dụ này, tôi đã sử dụng một vòng lặp lồng nhau để phân tích dữ liệu JSON đa cấp

{
    "FIFA_Last_Five_Winners" : ["France","Germany","Spain","Italy","Brazil"]
}
4

Chuyển đổi đối tượng JavaScript thành JSON

Đây là quá trình ngược lại của phần trên. JavaScript hỗ trợ chuyển đổi này bằng cách sử dụng JSON tích hợp sẵn của nó. phương pháp xâu chuỗi. Trong phần này, chúng ta hãy xem một mã ví dụ để tìm hiểu cách sử dụng JSON. xâu chuỗi bằng JavaScript

{
    "FIFA_Last_Five_Winners" : ["France","Germany","Spain","Italy","Brazil"]
}
0

Ngoài jQuery và các phương thức JSON JavaScript tích hợp sẵn, còn có các thư viện để xử lý JSON mạnh mẽ ở phía máy khách

Ví dụ: thư viện JSON-js là thư viện nổi bật để phân tích cú pháp JSON bằng nhiều phương thức khác nhau. Ngoài ra, nó cung cấp hỗ trợ để xử lý các cấu trúc theo chu kỳ

Cách đọc JSON bằng jQuery?

Trong bài viết này, chúng ta đã biết cách truy cập dữ liệu JSON thông qua AJAX bằng Javascript. Trong phần này, chúng ta sẽ xem cách sao chép tương tự với mã jQuery AJAX để thực hiện điều này

Thêm tập lệnh bên dưới vào trang xem nơi bạn muốn phản hồi JSON từ PHP qua AJAX. Trong tập lệnh này, chúng ta có thể thấy tùy chọn dataType được thêm vào để khởi tạo mặc định jQuery AJAX

Với đặc tả của kiểu dữ liệu này. 'JSON' gọi lại AJAX có thể lấy dữ liệu được định dạng JSON và xử lý nó. Trong ví dụ này, điểm cuối PHP được chỉ định trong tham số URL AJAX. Nó gọi getJSON. php qua AJAX

{
    "FIFA_Last_Five_Winners" : ["France","Germany","Spain","Italy","Brazil"]
}
4

Mã PHP giống như chúng ta đã sử dụng trong ví dụ JSON AJAX trước đó mà không cần jQuery. Tham khảo ví dụ trên để xem tập lệnh PHP để trả lại JSON được mã hóa cho jQuery AJAX gọi lại thành công

Tìm nạp API là gì?

API tìm nạp là giao diện tích hợp trong JavaScript được sử dụng để tìm nạp dữ liệu tài nguyên từ nhiều nguồn khác nhau. Nó cho phép truy cập từ xa trên mạng để lấy tài nguyên

API tìm nạp bao gồm các đối tượng phản hồi yêu cầu được sử dụng để gửi thông số tìm nạp và nhận nội dung phản hồi tương ứng

Cách sử dụng API tìm nạp JavaScript để nhận JSON

Để tìm nạp dữ liệu JSON bằng cách sử dụng FetchAPI, đường dẫn tài nguyên JSON phải được chuyển đến hàm tìm nạp[]. Đoạn mã dưới đây cho biết cách sử dụng JavaScript Fetch SPI để lấy dữ liệu JSON từ một tệp

{
    "FIFA_Last_Five_Winners" : ["France","Germany","Spain","Italy","Brazil"]
}
0

Xử lý và kiểm tra lỗi JSON

Trong quá trình xử lý xử lý JSON với PHP, có thể có khả năng xảy ra lỗi do một số nguyên nhân. Ví dụ: cú pháp JSON không đúng, vượt quá giới hạn độ sâu và nhiều lỗi khác

Nếu xảy ra lỗi, thì các hàm PHP JSON sẽ trả về NULL. Trong những trường hợp như vậy, hàm json_last_error[] sẽ hữu ích cho việc theo dõi và xử lý lỗi. Hàm này sẽ trả về một giá trị số đại diện cho mã lỗi JSON

Một số mã lỗi JSON và mô tả được liệt kê bên dưới

  • JSON_ERROR_NONE – Không có lỗi xảy ra
  • JSON_ERROR_DEPTH – Đã vượt quá độ sâu ngăn xếp tối đa
  • JSON_ERROR_STATE_MISMATCH – Xảy ra khi tràn hoặc với các chế độ không khớp
  • JSON_ERROR_CTRL_CHAR – Lỗi ký tự điều khiển, có thể được mã hóa không chính xác
  • JSON_ERROR_SYNTAX – Lỗi cú pháp
  • JSON_ERROR_UTF8 – Các ký tự UTF-8 không đúng định dạng, có thể được mã hóa không chính xác
  • JSON_ERROR_UTF8 – Các ký tự UTF-8 không đúng định dạng, có thể được mã hóa không chính xác

Sự kết luận

Đã qua rồi cái thời xử lý các tài liệu XML phức tạp cao. Đánh dấu lược đồ khó và thao tác với chúng không còn cần thiết nữa. Bất kỳ API phổ biến nào cũng sử dụng và tạo dữ liệu JSON. Nó vừa thoải mái về mặt xử lý của máy và sự hiểu biết của con người

JSON đã chiếm một vị trí cao hơn trong thế giới trao đổi dữ liệu và nó sẽ ở đó lâu dài khi việc áp dụng đang tăng lên từng ngày. Điểm quan trọng tôi muốn nhấn mạnh là PHP cung cấp hỗ trợ tối cao ở cấp độ cốt lõi để xử lý JSON

Bạn nên biết các chức năng được xác định trước đó và tận dụng nó để mã của bạn hiệu quả. Bài viết này đã tổng hợp tất cả các trường hợp sử dụng, cách triển khai và tình huống sự cố chính trong việc xử lý JSON bằng PHP

Hy vọng bạn thích nó. Thêm kinh nghiệm của bạn với JSON và bất kỳ thông tin đầu vào có giá trị nào trong biểu mẫu nhận xét bên dưới

Chủ Đề