Làm cách nào để tìm một giá trị trong mảng JSON Python?

Ví dụ truy vấn sau đây liệt kê tên của những người dùng đã hoàn thành dự án cùng với tổng số dự án đã hoàn thành. Nó thực hiện các hành động này

  • Sử dụng các câu lệnh SELECT lồng nhau để rõ ràng

  • Trích xuất mảng dự án

  • Chuyển đổi mảng thành một mảng gốc gồm các cặp khóa-giá trị bằng cách sử dụng CAST

  • Trích xuất từng phần tử mảng riêng lẻ bằng cách sử dụng toán tử UNNEST

  • Lọc các giá trị thu được theo các dự án đã hoàn thành và đếm chúng

Khi sử dụng CAST đến MAP, bạn có thể chỉ định thành phần khóa là

+-------------+
| user        |
+-------------+
| Susan Smith |
+-------------+
| Jane Smith  |
+-------------+
0 [Chuỗi gốc trong Presto], nhưng để lại giá trị dưới dạng JSON, vì các giá trị trong MAP thuộc các loại khác nhau. Chuỗi cho cặp khóa-giá trị đầu tiên và Boolean cho cặp thứ hai

Vì vậy, nếu bạn muốn biết sự khác biệt giữa đối tượng JSON và mảng JSON là gì, thì bài viết này là dành cho bạn

Bắt đầu nào

  • PIP so với. PIP3. Sự khác biệt?

nội dung.

Sự khác biệt giữa Đối tượng JSON và Mảng JSON là gì?

JSON [Ký hiệu đối tượng JavaScript] là một định dạng để lưu trữ và trao đổi dữ liệu dưới dạng khóa và giá trị. Ví dụ: khi truy xuất phản hồi từ yêu cầu HTTP

Sự khác biệt giữa một đối tượng JSON và một mảng JSON chỉ là vấn đề sở thích. Nếu bạn chịu trách nhiệm phát triển, điều đó tùy thuộc vào bạn

Trong phần sau, bạn sẽ tìm hiểu chính xác đối tượng JSON và mảng JSON là gì và chúng khác nhau như thế nào được giải thích bằng Python

Trong Python, làm việc với JSON được thực hiện tốt nhất bằng cách chuyển đổi chúng thành các đối tượng từ điển.  

Định dạng bản ghi JSON rất ngắn gọn và không yêu cầu thông tin trùng lặp như XML

Đối tượng JSON trong Python là gì?

Hãy tạo một đối tượng JSON và từ điển trong Python

{  
  "manufacturer": "Tesla Inc.", 
  "model": "Tesla S",
  "engineType": "elecrical",
  "horsePower": "362"
}
car = {  
  "manufacturer": "Tesla Inc.",
  "model": "Tesla S",
  "engineType": "elecrical",
  "horsePower": "362"
}

Ở đây chúng ta thấy kiểu dáng gần như giống hệt nhau trên hai đối tượng

Đầu tiên là đối tượng JSON mô tả ô tô và đối tượng thứ hai là từ điển Python có cùng giá trị.  

Bạn có thể chuyển các đối tượng JSON ở dạng văn bản thuần túy, điều này tốt và xấu.  

Ưu điểm là dễ đọc và phân tích, nhược điểm là bảo mật.  

Deserialization là quá trình chuyển đổi JSON thành các đối tượng.  

Đối với thư viện tiêu chuẩn Python json, quá trình giải tuần tự hóa sẽ tạo ra một đầu ra từ điển.  

Hãy chuyển đổi một chuỗi JSON thành một từ điển

>> import json
>> st_car = '{"manufacturer": "Tesla Inc.", "model": "Tesla S", "engineType": "elecrical", "horsePower": 362}'
>> js_car = json.loads[st_car]
>> print[js_car]
{'manufacturer': 'Tesla Inc.', 'model': 'Tesla S', 'engineType': 'elecrical', 'horsePower': 362}

Sau khi giải tuần tự hóa, bạn có thể truy cập các trường JSON dưới dạng các trường từ điển.  

Ví dụ: đây là nhà sản xuất ô tô của bạn

>> print[js_car["manufacturer"]]  
Tesla Inc.

Ở đây, đối tượng JSON được tải từ một chuỗi, giống như phản hồi cho yêu cầu HTTP.  

Bạn cũng có thể tải một đối tượng JSON từ một tệp bằng phương thức json. trọng tải

Để lưu một từ điển vào một đối tượng JSON, bạn cần thực hiện ngược lại quá trình giải tuần tự hóa, được gọi là tuần tự hóa

>> js_st = json.dumps[js_car]
>> print[js_st]
{'manufacturer': 'Tesla Inc.', 'model': 'Tesla S', 'engineType': 'elecrical', 'horsePower': 362}

Khi tuần tự hóa, bạn có thể chọn cách đối tượng sẽ hiển thị

>> js_st = json.dumps[js_car, indent = 4]
>> print[js_st]
{  
  "manufacturer": "Tesla Inc.",  
  "model": "Tesla S",  
  "engineType": "elecrical",  
  "horsePower": 362  
}  

Định dạng đẹp này hoạt động tốt với các đối tượng JSON có nhiều lồng nhau

Bạn cũng có thể tuần tự hóa một đối tượng JSON thành một tệp bằng phương thức  json. bãi rác

Trong ví dụ này, chúng tôi đã sử dụng chuỗi và số nguyên làm giá trị trường. Nhưng JSON toàn diện hơn.  

Bạn có thể sử dụng các kiểu dữ liệu này làm giá trị trường

  • Sợi dây. được đặt trong dấu ngoặc kép và có thể chứa các ký tự thoát, chẳng hạn như lập bảng, xuống dòng và ký tự Unicode
  • Con số. bao gồm cả số thực và số mũ
  • Boolean. đúng và sai
  • Không có. không có giá trị
  • đối tượng JSON. một đối tượng JSON khác
  • mảng JSON. một mảng JSON khác

Các loại JSON được chuyển đổi thành các loại dữ liệu Python trong quá trình giải tuần tự hóa như sau

JSONPythonobjectdictarrayliststringstrnumber [số nguyên]số nguyên [thực]floattrueTruefalseFalsenullNone

Và ngược lại khi họ đăng nhiều kỳ

PythonJSONdictobjectlist, tuplearraystrstringint, floatnumberTruetrueFalsefalseNonenull

Mảng JSON trong Python là gì?

Các mảng JSON có cấu trúc giống như các danh sách trong ngoặc của Python. Chúng có thể có cùng kiểu dữ liệu với giá trị trường đối tượng JSON, bao gồm các mảng lồng nhau.  

Hãy thêm một trường pin vào đối tượng JSON ở trên, giá trị của nó là một mảng JSON.  

Trong mảng này, chúng tôi sẽ theo dõi các giá trị dung lượng pin của Tesla

car = {  
  "manufacturer": "Tesla Inc.",
  "model": "Tesla S",
  "engineType": "elecrical",
  "horsePower": "362"
}
0

Khi được giải tuần tự hóa, mảng JSON trở thành danh sách Python.  

Bạn có thể tham khảo các yếu tố của danh sách này theo chỉ số.  

Mảng JSON ở đây đại diện cho giá trị của trường pin trong đối tượng JSON

car = {  
  "manufacturer": "Tesla Inc.",
  "model": "Tesla S",
  "engineType": "elecrical",
  "horsePower": "362"
}
1
car = {  
  "manufacturer": "Tesla Inc.",
  "model": "Tesla S",
  "engineType": "elecrical",
  "horsePower": "362"
}
2

Bạn cũng có thể chuyển một mảng JSON ở mức cao nhất của tệp hoặc chuỗi JSON. Hãy thêm một chiếc xe khác và xem điều gì sẽ xảy ra

car = {  
  "manufacturer": "Tesla Inc.",
  "model": "Tesla S",
  "engineType": "elecrical",
  "horsePower": "362"
}
3_______4_______

Trong trường hợp này, bạn có một mảng JSON chứa hai đối tượng JSON

Bạn chỉ có thể tham chiếu đến một đối tượng cụ thể trong mảng JSON bằng cách sử dụng chỉ mục của nó

Bạn có thể có cùng cấu trúc dữ liệu mà không cần sử dụng mảng JSON, chỉ sử dụng các đối tượng JSON lồng nhau. Xem tại đây

car = {  
  "manufacturer": "Tesla Inc.",
  "model": "Tesla S",
  "engineType": "elecrical",
  "horsePower": "362"
}
5_______2_______6

Chỉ có một đối tượng JSON với các đối tượng JSON khác bên trong. Các đối tượng JSON chứa hai trường có tên ô tô và các giá trị là các đối tượng JSON tương ứng.  

Nếu trình bao bọc là một đối tượng JSON thay vì một mảng, thì bạn có thể tham chiếu đến các đối tượng lồng nhau theo tên của chúng chứ không phải theo chỉ mục số của chúng

Đối tượng JSON so với. Mảng JSON. Sự khác biệt là gì?

Việc sử dụng phương pháp này hay phương pháp khác để chuyển nhiều đối tượng trong JSON tùy thuộc vào bất kỳ thứ gì bạn đang làm việc với. Nó chỉ là một vấn đề của hương vị.  

Nếu tất cả tùy thuộc vào bạn, bạn có thể chọn theo cách bạn muốn. Sử dụng các đối tượng JSON lồng nhau và tham chiếu các trường của chúng theo tên trường hoặc sử dụng các mảng JSON và tham chiếu các phần tử của chúng theo chỉ mục

Điều đáng chú ý là khi bạn giải mã một đối tượng JSON có cấu trúc bị hỏng, bạn sẽ nhận được JSONDecodeError.  

Ví dụ: nếu bạn quên chỉ định tên của nhà sản xuất trường cho một trong các phần tử mảng JSON

Làm cách nào để lấy giá trị cụ thể từ mảng JSON trong Python?

Chỉ cần nhìn vào cấu trúc, bạn có thể làm điều gì đó như. cho attrs trong r. json[]['dữ liệu']['mảng']. if attrs['name'] == s_name. ident = attrs['id'] name = attrs['name'] print[name, '-', ident] break other. print['Không tìm thấy gì. ']

Làm cách nào để tìm kiếm giá trị trong JSON Python?

Đọc tệp json bằng chức năng tải của mô-đun JSON
Yêu cầu người dùng nhập dữ liệu
Viết hàm kiểm tra key nhập liệu có trong file
Nếu có thì hãy chuyển khóa cho một chức năng khác để truy xuất các giá trị được liên kết với nó
Nếu không có khóa nào khớp thì in ra các khóa để người dùng chọn

Làm cách nào để tìm kiếm một giá trị trong JSON?

Tìm kiếm giá trị trong mảng JSON .
Sử dụng các câu lệnh SELECT lồng nhau để làm rõ
Trích xuất mảng dự án
Chuyển đổi mảng thành một mảng riêng của các cặp khóa-giá trị bằng cách sử dụng CAST
Trích xuất từng phần tử mảng riêng lẻ bằng toán tử UNNEST
Lọc các giá trị thu được theo các dự án đã hoàn thành và đếm chúng

Chủ Đề