SQLite
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> SQLite

SQLite JSON ()

Trong SQLite, json() hàm chuyển đổi văn bản thô trông giống như JSON thành JSON thực tế.

Chúng tôi truyền một chuỗi JSON làm đối số khi chúng tôi gọi hàm. json() sau đó hàm kiểm tra xem đối số có phải là một chuỗi JSON hợp lệ hay không và trả về phiên bản rút gọn của chuỗi JSON đó. Nếu đối số không phải là một chuỗi JSON được định dạng tốt thì sẽ xảy ra lỗi.

Tuy nhiên, json() hàm không được thiết kế để kiểm tra xem một giá trị có phải là JSON hợp lệ hay không. Để làm điều đó, hãy sử dụng json_valid() chức năng thay thế.

Cú pháp

json(X)

Ở đâu X là giá trị được kiểm tra và rút gọn.

Ví dụ

SELECT json('{ "a": 1 }');

Kết quả:

{"a":1}

Trong trường hợp này, tôi đã cung cấp một tài liệu JSON hợp lệ và do đó, một phiên bản rút gọn của nó đã được trả lại (các khoảng trắng không cần thiết đã được xóa).

Dưới đây là một ví dụ sử dụng tài liệu JSON lớn hơn với nhiều khoảng trắng hơn:

SELECT json('{
	"_id": 1.0,
	"title": "Animals",
	"body": "blah blah 1",
	"tags": [
		"cats",
		"dogs"
	]
}');

Kết quả:

{"_id":1.0,"title":"Animals","body":"blah blah 1","tags":["cats","dogs"]}

json() hàm có thể hữu ích khi bạn cần chuyển JSON cho một hàm khác. Như đã đề cập, nó chuyển đổi văn bản thô trông giống như JSON thành JSON thực tế, điều này làm cho nó trở nên lý tưởng khi bạn cần chuyển nó cho hàm khác. Sau đó, hàm khác sẽ diễn giải giá trị dưới dạng JSON chứ không phải là một chuỗi.

JSON không hợp lệ

Chuyển một chuỗi JSON không hợp lệ dẫn đến lỗi:

SELECT json('{oops!');

Kết quả:

Runtime error: malformed JSON

Nhãn trùng lặp

Nếu tài liệu JSON chứa các nhãn trùng lặp, không có gì đảm bảo rằng chúng sẽ luôn được giữ nguyên.

Tại thời điểm viết, các nhãn trùng lặp được giữ nguyên. Tuy nhiên, tài liệu SQLite khuyên rằng điều này có thể thay đổi trong phiên bản SQLite trong tương lai, để các nhãn trùng lặp bị loại bỏ một cách âm thầm.

Dưới đây là một ví dụ sử dụng tài liệu JSON có nhãn trùng lặp:

SELECT json('{ "a": 1, "b": 1, "a" : 2 }');

Kết quả:

{"a":1,"b":1,"a":2}

Trong trường hợp này, tài liệu JSON của tôi có hai nhãn được gọi là a . Cả hai đều được giữ nguyên trong cài đặt SQLite của tôi (phiên bản 3.38.0), nhưng điều này có thể không phải lúc nào cũng đúng trong các phiên bản SQLite trong tương lai.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách Bật / Tắt các Ràng buộc KIỂM TRA trong SQLite

  2. Android sqlite db.query dẫn đến CursorIndexOutOfBoundsException

  3. Truy vấn SQLite:lấy tất cả các cột của một hàng (android)?

  4. Làm thế nào để tạo bảng bằng cơ sở dữ liệu sqlite trong Android?

  5. Xóa mục khỏi ListView và Cơ sở dữ liệu bằng OnItemClickListener