Hướng dẫn create json with multiple objects python - tạo json với nhiều đối tượng python

Tôi muốn nối nhiều đối tượng vào một mảng trong tệp JSON. Mỗi đối tượng được tạo sau khi thực thi mã và sau đó lưu vào một mảng trong tệp JSON.

Tôi có mã này:

import json
users = [
    {
        "username": "",
        "phone": ""
    }
]

username = input('Username: ')
phone = input('Phone: ')
for user in users:
    user['username'] = username
    user['phone'] = phone

with open('users.json', 'a') as file:
    json.dump(users, file, indent=4)

Sau khi thực hiện mã này một lần, tôi nhận được điều này:

[
    {
        "username": "Mark",
        "phone": "333-4743"
    }
]

Sau khi thực hiện hai lần tôi nhận được điều này:

[
    {
        "username": "Mark",
        "phone": "333-4743"
    }
][
    {
        "username": "Jane",
        "phone": "555-6723"
    }
]

Nhưng tôi muốn kết quả này:

[
    {
        "username": "Mark",
        "phone": "333-4743"
    },
    {
        "username": "Jane",
        "phone": "555-6723"
    }
]

Làm thế nào tôi có thể đạt được kết quả này?

Bạn đang ở đây vì khi bạn cố gắng tải và phân tích tệp JSON với nhiều đối tượng JSON trong Python, bạn đã nhận được một lỗi.

[
    {
        "username": "Mark",
        "phone": "333-4743"
    }
][
    {
        "username": "Jane",
        "phone": "555-6723"
    }
]
0. Lý do là phương thức & nbsp; json.load () chỉ có thể xử lý một đối tượng JSON duy nhất.

Tệp không hợp lệ nếu nó chứa nhiều đối tượng JSON. Khi bạn cố gắng tải và phân tích tệp JSON với nhiều đối tượng JSON, mỗi dòng chứa JSON hợp lệ, nhưng nói chung, nó không phải là JSON hợp lệ vì không có danh sách cấp cao hoặc định nghĩa đối tượng. Chúng ta chỉ có thể gọi JSON là JSON hợp lệ khi có danh sách cấp cao nhất hoặc định nghĩa đối tượng.

Ví dụ: bạn muốn đọc tệp JSON sau đây, lọc một số dữ liệu và lưu trữ nó vào tệp JSON mới.

{"id": 1, "name": "Ault", "class": 8, "email": ""}
{"id": 2, "name": "john", "class": 8, "email": ""}
{"id": 3, "name": "josh", "class": 8, "email": ""}
{"id": 4, "name": "emma", "class": 8, "email": ""}

Nếu tệp của bạn chứa một danh sách các đối tượng JSON và bạn muốn giải mã một đối tượng một-một lần, chúng tôi có thể làm điều đó. Để tải và phân tích tệp JSON với nhiều đối tượng JSON, chúng ta cần tuân theo các bước dưới đây:Load and parse a JSON file with multiple JSON objects we need to follow below steps:

  • Tạo một danh sách trống có tên
    [
        {
            "username": "Mark",
            "phone": "333-4743"
        }
    ][
        {
            "username": "Jane",
            "phone": "555-6723"
        }
    ]
    
    1
  • Đọc từng dòng tệp vì mỗi dòng chứa JSON hợp lệ. tức là, đọc một đối tượng JSON tại một thời điểm.
  • Chuyển đổi từng đối tượng JSON thành Python
    [
        {
            "username": "Mark",
            "phone": "333-4743"
        }
    ][
        {
            "username": "Jane",
            "phone": "555-6723"
        }
    ]
    
    2 bằng cách sử dụng
    [
        {
            "username": "Mark",
            "phone": "333-4743"
        }
    ][
        {
            "username": "Jane",
            "phone": "555-6723"
        }
    ]
    
    3
  • Lưu từ điển này vào một danh sách có tên là respress jsonlist.

Hãy để xem ví dụ bây giờ.

import json

studentsList = []
print("Started Reading JSON file which contains multiple JSON document")
with open('students.txt') as f:
    for jsonObj in f:
        studentDict = json.loads(jsonObj)
        studentsList.append(studentDict)

print("Printing each JSON Decoded Object")
for student in studentsList:
    print(student["id"], student["name"], student["class"], student["email"])

Output::

Started Reading JSON file which contains multiple JSON document
Printing each JSON Decoded Object
1 Ault 8 
2 john 8 
3 josh 8 
4 emma 8 

Vậy bạn nghĩ như thế nào?

Tôi muốn nghe từ bạn. Bạn nghĩ gì về bài viết này? Hoặc có thể tôi đã bỏ lỡ một trong những cách để phân tích nhiều đối tượng JSON từ một tệp, dù bằng cách nào, hãy cho tôi biết bằng cách để lại một bình luận bên dưới.leaving a comment below.

Ngoài ra, hãy cố gắng giải bài tập Python JSON để hiểu rõ hơn về việc làm việc với dữ liệu JSON trong Python.

Bài tập và câu đố Python

Các bài tập mã hóa miễn phí và các câu đố bao gồm các vấn đề cơ bản của Python, cấu trúc dữ liệu, phân tích dữ liệu, v.v.

  • Hơn 15 bài tập và câu đố dành riêng cho chủ đềTopic-specific Exercises and Quizzes
  • Mỗi bài tập chứa 10 câu hỏi
  • Mỗi bài kiểm tra chứa 12-15 mcq

Xử lý và tạo dữ liệu JSON trong Python

Ảnh của Vipul Jha trên unplash

Ký hiệu đối tượng JavaScript (JSON) là một định dạng dữ liệu phổ biến thường được sử dụng trong các giao lộ dữ liệu giữa các hệ thống khác nhau. Chẳng hạn, nhiều API trả về kết quả trong định dạng dữ liệu JSON. Với khả năng đọc đáng chú ý và cấu trúc giống như đối tượng của JSON, thật hữu ích khi biết Python xử lý dữ liệu JSON như thế nào. Trong bài viết này, chúng tôi sẽ thấy JSON là gì và cách xử lý nó với mô-đun

[
    {
        "username": "Mark",
        "phone": "333-4743"
    }
][
    {
        "username": "Jane",
        "phone": "555-6723"
    }
]
4 tích hợp trong Python.

Cấu trúc dữ liệu của JSON

Dữ liệu JSON được cấu trúc dưới dạng các đối tượng JSON, chứa dữ liệu dưới dạng các cặp giá trị khóa, giống như từ điển Python. Đoạn mã sau đây cho bạn thấy một đối tượng JSON điển hình trông như thế nào.

{  "firstName": "John",  "lastName": "Smith",  "age": 35,  "city": "San Francisco"}

Về bản chất, một đối tượng JSON được phân chia bởi một cặp niềng răng xoăn, trong đó các cặp giá trị khóa được lưu trữ. Các đối tượng JSON yêu cầu các khóa của chúng chỉ là chuỗi và yêu cầu này cho phép giao tiếp tiêu chuẩn giữa các hệ thống khác nhau. Các giá trị được hiển thị bao gồm các chuỗi và số nguyên, nhưng JSON hỗ trợ các loại dữ liệu khác, bao gồm booleans, mảng và đối tượng.

  • Chuỗi: Chuỗi nghĩa đen kèm theo dấu ngoặc kép
  • Số: Số chữ số, bao gồm các số nguyên và số thập phân
  • Boolean: Giá trị Boolean, Đúng hoặc Sai
  • Mảng: Danh sách các loại dữ liệu được hỗ trợ
  • Đối tượng: Các cặp giá trị khóa được bao quanh bởi niềng răng xoăn
  • Null: một giá trị trống (null) cho bất kỳ loại dữ liệu hợp lệ nào

Trong số các loại này, một sự chú ý đặc biệt để trả tiền là, không giống như các chuỗi Python có thể sử dụng các trích dẫn đơn hoặc đôi, các chuỗi JSON chỉ được đặt trong các trích dẫn kép. Việc sử dụng không đúng các trích dẫn đơn lẻ làm mất hiệu lực dữ liệu JSON, có thể được xử lý bởi một trình phân tích cú pháp JSON thông thường.

Bên cạnh các loại dữ liệu được hỗ trợ này, điều quan trọng là phải biết rằng JSON hỗ trợ các cấu trúc dữ liệu lồng nhau. Chẳng hạn, bạn có thể nhúng một đối tượng JSON bên trong một đối tượng khác. Đối với một trường hợp khác, một mảng có thể bao gồm bất kỳ loại dữ liệu được hỗ trợ nào, bao gồm các đối tượng. Một số ví dụ được hiển thị dưới đây:

an object resides in another object:
{
"one": 1,
"two": {"one": 1}
}
an array consists of multiple objects:
[
{"one": 1},
{"two": 2},
{"three": 3}
]

Tính linh hoạt của việc trộn các loại dữ liệu khác nhau cho phép chúng tôi xây dựng dữ liệu rất phức tạp với thông tin cấu trúc rõ ràng vì tất cả các dữ liệu được lưu dưới dạng các cặp giá trị khóa.

Kiểu dữ liệu khớp giữa JSON và Python

Là một định dạng trao đổi dữ liệu phổ biến, các loại dữ liệu JSON có cấu trúc dữ liệu Python gốc tương ứng. Xin lưu ý rằng đây là lưu lượng hai chiều-cách dữ liệu JSON được chuyển đổi thành dữ liệu Python và tương tự (với một vài ngoại lệ) quy tắc chuyển đổi được áp dụng khi bạn chuyển đổi dữ liệu Python sang dữ liệu JSON.

+-----------+----------------+
| JSON | Python |
+-----------+----------------+
| String | str |
| Number | int or float |
| Boolean | bool |
| Array | list |
| Object | dict |
| Null | NoneType |
+-----------+----------------+

Các chuyển đổi này phải rất đơn giản ngoại trừ Python không có loại dữ liệu gốc phù hợp với số trong các đối tượng JSON. Thay vào đó, chúng tôi sẽ phải sử dụng int và float để thể hiện số JSON khi họ là số nguyên hoặc số thực. Bạn cũng có thể nhận thấy rằng bảng cho cột dữ liệu Python bị thiếu tple và được đặt. Đáng chú ý, một tuple được chuyển đổi thành một mảng, trong khi một tập hợp không thể chuyển đổi thành một mảng.

Đọc chuỗi JSON

Khi chúng tôi đọc và giải mã dữ liệu JSON vào các cấu trúc dữ liệu của các ngôn ngữ lập trình khác, chẳng hạn như Python, để xử lý thêm, chúng tôi nói rằng chúng tôi phân hủy dữ liệu JSON. Nói cách khác, quá trình đọc và giải mã được gọi là khử deserialization. Trong thư viện tiêu chuẩn của Python, chúng tôi có mô -đun

[
    {
        "username": "Mark",
        "phone": "333-4743"
    }
][
    {
        "username": "Jane",
        "phone": "555-6723"
    }
]
4 chuyên về dữ liệu JSON giảm dần.deserialize JSON data. In other words, the reading and decoding process is termed deserialization. In Python’s standard library, we have the
[
    {
        "username": "Mark",
        "phone": "333-4743"
    }
][
    {
        "username": "Jane",
        "phone": "555-6723"
    }
]
4 module that is specialized in deserializing JSON data.

Chúng tôi biết rằng TTHER phổ biến cho các dịch vụ web sử dụng các đối tượng JSON làm phản hồi API. Giả sử rằng bạn nhận được phản hồi sau. Để tạo điều kiện cho cuộc thảo luận, hãy để biểu hiện nó như một đối tượng chuỗi Python.

[
    {
        "username": "Mark",
        "phone": "333-4743"
    }
]
0

Để đọc chuỗi JSON này, chúng tôi chỉ cần sử dụng phương thức

[
    {
        "username": "Mark",
        "phone": "333-4743"
    }
][
    {
        "username": "Jane",
        "phone": "555-6723"
    }
]
6. Như được hiển thị bên dưới, chúng tôi có thể có được một đối tượng
[
    {
        "username": "Mark",
        "phone": "333-4743"
    }
][
    {
        "username": "Jane",
        "phone": "555-6723"
    }
]
2 sau khi đọc chuỗi chứa đối tượng JSON trên.

Phương pháp

[
    {
        "username": "Mark",
        "phone": "333-4743"
    }
][
    {
        "username": "Jane",
        "phone": "555-6723"
    }
]
6 là linh hoạt. Khi bạn có một chuỗi đại diện cho một danh sách các đối tượng JSON, phương pháp này đủ thông minh để biết cách phân tích dữ liệu cho phù hợp. Xem xét các ví dụ sau.

[
    {
        "username": "Mark",
        "phone": "333-4743"
    }
]
1

Ngoài các đối tượng JSON có cấu trúc này, phương thức

[
    {
        "username": "Mark",
        "phone": "333-4743"
    }
][
    {
        "username": "Jane",
        "phone": "555-6723"
    }
]
6 cũng có thể phân tích bất kỳ loại dữ liệu JSON nào khác ngoài các đối tượng. Một số ví dụ dưới đây.

[
    {
        "username": "Mark",
        "phone": "333-4743"
    }
]
2

Đọc các tập tin JSON

Phần trước đã thảo luận về các khía cạnh khác nhau liên quan đến việc giải phóng các chuỗi JSON. Tuy nhiên, bạn không luôn luôn trực tiếp đối phó với các chuỗi. Đôi khi, bạn sẽ có cơ hội làm việc với các tệp JSON. Giả sử bạn chạy mã sau để tạo một tệp giữ chuỗi JSON.

[
    {
        "username": "Mark",
        "phone": "333-4743"
    }
]
3

Chắc chắn, bạn có thể đọc tệp trực tiếp để tạo chuỗi, có thể được gửi đến phương thức

[
    {
        "username": "Mark",
        "phone": "333-4743"
    }
][
    {
        "username": "Jane",
        "phone": "555-6723"
    }
]
6.

[
    {
        "username": "Mark",
        "phone": "333-4743"
    }
]
4

Đáng chú ý, mô -đun

[
    {
        "username": "Mark",
        "phone": "333-4743"
    }
][
    {
        "username": "Jane",
        "phone": "555-6723"
    }
]
4 cung cấp phương thức
[
    {
        "username": "Mark",
        "phone": "333-4743"
    },
    {
        "username": "Jane",
        "phone": "555-6723"
    }
]
2 cho phép chúng tôi làm việc trực tiếp với một tệp để phân tích dữ liệu Parse JSON:

[
    {
        "username": "Mark",
        "phone": "333-4743"
    }
]
5

Nó chắc chắn rõ ràng hơn so với triển khai trước đó bằng cách lưu nhu cầu tạo một đối tượng chuỗi trung gian.

Ở đây, chúng tôi đã tìm hiểu về các kịch bản cơ bản nhất cho các phương pháp

[
    {
        "username": "Mark",
        "phone": "333-4743"
    },
    {
        "username": "Jane",
        "phone": "555-6723"
    }
]
2 và
[
    {
        "username": "Mark",
        "phone": "333-4743"
    }
][
    {
        "username": "Jane",
        "phone": "555-6723"
    }
]
6. Cần lưu ý rằng dữ liệu phân tích cú pháp JSON thông qua lớp
[
    {
        "username": "Mark",
        "phone": "333-4743"
    },
    {
        "username": "Jane",
        "phone": "555-6723"
    }
]
5. Mặc dù lớp cơ sở này đủ mạnh để xử lý hầu hết các tình huống, nhưng nó có thể xác định các hành vi tùy chỉnh hơn bằng cách tạo một lớp con của lớp
[
    {
        "username": "Mark",
        "phone": "333-4743"
    },
    {
        "username": "Jane",
        "phone": "555-6723"
    }
]
5. Tuy nhiên, nếu bạn không muốn phân lớp, các phương thức
[
    {
        "username": "Mark",
        "phone": "333-4743"
    },
    {
        "username": "Jane",
        "phone": "555-6723"
    }
]
2 và
[
    {
        "username": "Mark",
        "phone": "333-4743"
    }
][
    {
        "username": "Jane",
        "phone": "555-6723"
    }
]
6 cung cấp các tham số khác mà bạn có thể xác định các hành vi phân tích cú pháp tùy chỉnh. Độc giả tò mò có thể tham khảo tài liệu chính thức để được hướng dẫn thêm.

Viết dữ liệu Python vào định dạng JSON

Giống như đọc dữ liệu JSON, viết dữ liệu Python vào định dạng JSON bao gồm hai phương thức đối tác, cụ thể là

[
    {
        "username": "Mark",
        "phone": "333-4743"
    },
    {
        "username": "Jane",
        "phone": "555-6723"
    }
]
9 và
{"id": 1, "name": "Ault", "class": 8, "email": ""}
{"id": 2, "name": "john", "class": 8, "email": ""}
{"id": 3, "name": "josh", "class": 8, "email": ""}
{"id": 4, "name": "emma", "class": 8, "email": ""}
0. Như ngược lại với dữ liệu JSON giảm dần, việc tạo dữ liệu JSON được gọi là tuần tự hóa. Do đó, khi chúng tôi chuyển đổi dữ liệu Python sang dữ liệu JSON, chúng tôi nói rằng chúng tôi tuần tự hóa các đối tượng Python thành dữ liệu JSON.

Giống như các phương thức

[
    {
        "username": "Mark",
        "phone": "333-4743"
    },
    {
        "username": "Jane",
        "phone": "555-6723"
    }
]
2 và
[
    {
        "username": "Mark",
        "phone": "333-4743"
    }
][
    {
        "username": "Jane",
        "phone": "555-6723"
    }
]
6, các phương thức
[
    {
        "username": "Mark",
        "phone": "333-4743"
    },
    {
        "username": "Jane",
        "phone": "555-6723"
    }
]
9 và
{"id": 1, "name": "Ault", "class": 8, "email": ""}
{"id": 2, "name": "john", "class": 8, "email": ""}
{"id": 3, "name": "josh", "class": 8, "email": ""}
{"id": 4, "name": "emma", "class": 8, "email": ""}
0 có chữ ký gọi gần như giống hệt nhau. Sự khác biệt quan trọng nhất là phương thức
[
    {
        "username": "Mark",
        "phone": "333-4743"
    },
    {
        "username": "Jane",
        "phone": "555-6723"
    }
]
9 ghi dữ liệu vào tệp JSON, trong khi phương thức
{"id": 1, "name": "Ault", "class": 8, "email": ""}
{"id": 2, "name": "john", "class": 8, "email": ""}
{"id": 3, "name": "josh", "class": 8, "email": ""}
{"id": 4, "name": "emma", "class": 8, "email": ""}
0 ghi vào chuỗi định dạng JSON. Để đơn giản, chúng tôi sẽ chỉ tập trung vào phương pháp
{"id": 1, "name": "Ault", "class": 8, "email": ""}
{"id": 2, "name": "john", "class": 8, "email": ""}
{"id": 3, "name": "josh", "class": 8, "email": ""}
{"id": 4, "name": "emma", "class": 8, "email": ""}
0. Xem xét các ví dụ sau.

[
    {
        "username": "Mark",
        "phone": "333-4743"
    }
]
6

Trong ví dụ này, chúng tôi nhận thấy rằng phương thức

{"id": 1, "name": "Ault", "class": 8, "email": ""}
{"id": 2, "name": "john", "class": 8, "email": ""}
{"id": 3, "name": "josh", "class": 8, "email": ""}
{"id": 4, "name": "emma", "class": 8, "email": ""}
0 tạo ra một mảng JSON chứa các loại dữ liệu JSON khác nhau. Quan sát quan trọng nhất là mặc dù đối tượng
{"id": 1, "name": "Ault", "class": 8, "email": ""}
{"id": 2, "name": "john", "class": 8, "email": ""}
{"id": 3, "name": "josh", "class": 8, "email": ""}
{"id": 4, "name": "emma", "class": 8, "email": ""}
9 gốc sử dụng các cấu trúc dữ liệu python gốc, chuỗi JSON được tạo có cấu trúc dữ liệu JSON được chuyển đổi. Phù hợp với bảng chuyển đổi đã được hiển thị trước đó, lưu ý các chuyển đổi sau.

  • Chuỗi được bao quanh với các trích dẫn đơn ‘Văn bản hiện đang sử dụng các trích dẫn kép. Văn bản.
  • Đối tượng Python bool
    import json
    
    studentsList = []
    print("Started Reading JSON file which contains multiple JSON document")
    with open('students.txt') as f:
        for jsonObj in f:
            studentDict = json.loads(jsonObj)
            studentsList.append(studentDict)
    
    print("Printing each JSON Decoded Object")
    for student in studentsList:
        print(student["id"], student["name"], student["class"], student["email"])
    0 trở nên sai.
  • Đối tượng
    import json
    
    studentsList = []
    print("Started Reading JSON file which contains multiple JSON document")
    with open('students.txt') as f:
        for jsonObj in f:
            studentDict = json.loads(jsonObj)
            studentsList.append(studentDict)
    
    print("Printing each JSON Decoded Object")
    for student in studentsList:
        print(student["id"], student["name"], student["class"], student["email"])
    1 trở thành null.
  • Bởi vì chỉ các chuỗi có thể là các khóa JSON, số 1 được tự động chuyển đổi thành đối tác chuỗi của nó.

Bên cạnh các chuyển đổi tự động này, có hai tính năng đáng chú ý mà chúng ta thường sử dụng. Đầu tiên là tạo các đối tượng JSON ở định dạng dễ đọc hơn bằng cách sử dụng các vết lõm thích hợp. Để làm điều đó, chúng ta cần đặt tham số thụt trong phương thức

{"id": 1, "name": "Ault", "class": 8, "email": ""}
{"id": 2, "name": "john", "class": 8, "email": ""}
{"id": 3, "name": "josh", "class": 8, "email": ""}
{"id": 4, "name": "emma", "class": 8, "email": ""}
0.

Như được hiển thị ở trên, mọi cấp độ đều được thụt đầu vào để chỉ ra cấu trúc tương đối của các đối tượng JSON và các cặp giá trị khóa của chúng.

Tính năng hữu ích khác là đặc điểm kỹ thuật của tham số

import json

studentsList = []
print("Started Reading JSON file which contains multiple JSON document")
with open('students.txt') as f:
    for jsonObj in f:
        studentDict = json.loads(jsonObj)
        studentsList.append(studentDict)

print("Printing each JSON Decoded Object")
for student in studentsList:
    print(student["id"], student["name"], student["class"], student["email"])
3. Bằng cách đặt nó thành
import json

studentsList = []
print("Started Reading JSON file which contains multiple JSON document")
with open('students.txt') as f:
    for jsonObj in f:
        studentDict = json.loads(jsonObj)
        studentsList.append(studentDict)

print("Printing each JSON Decoded Object")
for student in studentsList:
    print(student["id"], student["name"], student["class"], student["email"])
4, các chuỗi JSON được tạo có các khóa được sắp xếp theo thứ tự bảng chữ cái, giúp chúng tôi dễ dàng tìm kiếm thông tin, đặc biệt khi có nhiều mục. Quan sát tính năng này dưới đây.

Chúng tôi đã học được rằng các phương pháp

[
    {
        "username": "Mark",
        "phone": "333-4743"
    },
    {
        "username": "Jane",
        "phone": "555-6723"
    }
]
2 và
[
    {
        "username": "Mark",
        "phone": "333-4743"
    }
][
    {
        "username": "Jane",
        "phone": "555-6723"
    }
]
6 là để giải phóng hóa và các phương pháp
[
    {
        "username": "Mark",
        "phone": "333-4743"
    },
    {
        "username": "Jane",
        "phone": "555-6723"
    }
]
9 và
{"id": 1, "name": "Ault", "class": 8, "email": ""}
{"id": 2, "name": "john", "class": 8, "email": ""}
{"id": 3, "name": "josh", "class": 8, "email": ""}
{"id": 4, "name": "emma", "class": 8, "email": ""}
0 là để tuần tự hóa. Những tên phương pháp này có vẻ khó hiểu với một số người. Dưới đây là một số lời khuyên có thể giúp bạn phân biệt chúng.

  • Dữ liệu của JSON nằm ngoài Python, khi bạn cần truy cập dữ liệu của họ, chúng tôi cần phải tải tải vào Python. Do đó, tải đề cập đến việc đọc dữ liệu JSON.
  • Ngược lại, để xuất dữ liệu Python sang dữ liệu JSON, chúng tôi đã kết xuất dữ liệu. Do đó, việc bán phá giá đề cập đến việc viết dữ liệu JSON.
  • Nếu dữ liệu JSON đầu vào hoặc đầu ra là các chuỗi, hãy nghĩ về các chuỗi là các chuỗi sao cho chúng tôi nối các chữ cái vào S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S Tương tự, nếu chúng tôi muốn có các chuỗi JSON, chúng tôi đã nối chữ cái S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S.

Viết các phiên bản tùy chỉnh cho dữ liệu JSON

Chúng tôi đã tập trung vào các cấu trúc dữ liệu Python tích hợp, trong nhiều ứng dụng, bạn sẽ xác định các lớp tùy chỉnh của riêng mình khi bạn cần phải tuần tự hóa các đối tượng phiên bản tùy chỉnh này thành dữ liệu JSON. Hãy cùng xem xét lớp sau, từ đó chúng tôi tạo một thể hiện:

[
    {
        "username": "Mark",
        "phone": "333-4743"
    }
]
7

Bạn mong đợi điều gì sẽ xảy ra nếu chúng ta cố gắng gọi

{"id": 1, "name": "Ault", "class": 8, "email": ""}
{"id": 2, "name": "john", "class": 8, "email": ""}
{"id": 3, "name": "josh", "class": 8, "email": ""}
{"id": 4, "name": "emma", "class": 8, "email": ""}
0 vào
Started Reading JSON file which contains multiple JSON document
Printing each JSON Decoded Object
1 Ault 8 
2 john 8 
3 josh 8 
4 emma 8 
0? Nó có thể thành công? Hãy xem nào:

[
    {
        "username": "Mark",
        "phone": "333-4743"
    }
]
8

Không, nó không hoạt động. Lý do cho sự thất bại này là phương thức

{"id": 1, "name": "Ault", "class": 8, "email": ""}
{"id": 2, "name": "john", "class": 8, "email": ""}
{"id": 3, "name": "josh", "class": 8, "email": ""}
{"id": 4, "name": "emma", "class": 8, "email": ""}
0 đang cố gắng tạo chuỗi JSON hợp lệ. Tuy nhiên, đối với một thể hiện lớp tùy chỉnh, nó không biết dữ liệu nào nên được mã hóa. Mặc dù bạn có thể tạo lớp jsonencoder của riêng mình, một giải pháp nhanh là cung cấp các hướng dẫn mã hóa cho phương thức
{"id": 1, "name": "Ault", "class": 8, "email": ""}
{"id": 2, "name": "john", "class": 8, "email": ""}
{"id": 3, "name": "josh", "class": 8, "email": ""}
{"id": 4, "name": "emma", "class": 8, "email": ""}
0 bằng cách đặt đối số
Started Reading JSON file which contains multiple JSON document
Printing each JSON Decoded Object
1 Ault 8 
2 john 8 
3 josh 8 
4 emma 8 
3.

[
    {
        "username": "Mark",
        "phone": "333-4743"
    }
]
9

Ở đây, chúng tôi chỉ định chức năng Lambda, truy xuất biểu diễn Dictical của phiên bản thông qua việc truy cập thuộc tính đặc biệt của

Started Reading JSON file which contains multiple JSON document
Printing each JSON Decoded Object
1 Ault 8 
2 john 8 
3 josh 8 
4 emma 8 
4. Chúng tôi biết rằng đối tượng
[
    {
        "username": "Mark",
        "phone": "333-4743"
    }
][
    {
        "username": "Jane",
        "phone": "555-6723"
    }
]
2 tích hợp có thể nối tiếp với JSON để
{"id": 1, "name": "Ault", "class": 8, "email": ""}
{"id": 2, "name": "john", "class": 8, "email": ""}
{"id": 3, "name": "josh", "class": 8, "email": ""}
{"id": 4, "name": "emma", "class": 8, "email": ""}
0 biết về việc kết xuất đối tượng
[
    {
        "username": "Mark",
        "phone": "333-4743"
    }
][
    {
        "username": "Jane",
        "phone": "555-6723"
    }
]
2.

Kết luận

Trong bài đăng này, chúng tôi đã xem xét các kỹ thuật chính để xử lý dữ liệu JSON trong Python. Dưới đây là những điều quan trọng:

  1. Dữ liệu JSON là một định dạng dữ liệu trao đổi tiêu chuẩn. Khi bạn tạo API cho người khác sử dụng, hãy coi JSON là định dạng có thể cho dữ liệu phản hồi của bạn.
  2. Python đã tách các phương pháp để xử lý các chuỗi và tệp JSON. Những phương pháp này có chữ ký gọi tương tự.
  3. Sử dụng các vết lõm thích hợp để cải thiện khả năng đọc của dữ liệu JSON. Nó đặc biệt có liên quan nếu bạn tạo ra một chuỗi JSON. Chỉ cần chỉ định tham số thụt lề khi bạn tuần tự hóa các đối tượng Python.
  4. Khi bạn có nhiều cặp giá trị khóa cho các đối tượng JSON, thì đó thường là một ý tưởng tốt để sắp xếp các khóa để nó sẽ dễ dàng tìm kiếm thông tin hơn.
  5. Hãy nhớ rằng các phím JSON phải là chuỗi và chúng yêu cầu trích dẫn gấp đôi.
  6. Để tuần tự hóa một thể hiện tùy chỉnh, bạn cần cung cấp các hướng dẫn cụ thể về việc tuần tự hóa.

JSON có thể có nhiều đối tượng không?

Bạn có thể chuyển một đối tượng JSON duy nhất để tạo một phần tử duy nhất hoặc một mảng JSON gồm các đối tượng JSON nhóm để tạo nhiều phần tử.a JSON array of group JSON objects to create multiple elements.

JSON có thể có nhiều yếu tố gốc không?

Phần tử gốc ảo: Nếu tài liệu JSON đến có nhiều phần tử gốc, hãy nhập phần tử gốc ảo để được thêm vào tài liệu XML đầu ra.Điều này là bắt buộc vì nhiều phần tử gốc không hợp lệ trong XML.Nếu không, trình phân tích cú pháp XML sẽ thất bại.Để biết thêm chi tiết, hãy xem phần có tên là ví dụ trên mạng.If the incoming JSON document has multiple root elements, enter a virtual root element to be added to the output XML document. This is required because multiple root elements are not valid in XML. Otherwise, the XML parser will fail. For more details, see the section called “Examples”.

JSON nhiều dòng là gì?

API nguồn dữ liệu Spark JSON cung cấp tùy chọn đa dòng để đọc các bản ghi từ nhiều dòng.Theo mặc định, Spark xem xét mọi bản ghi trong tệp JSON dưới dạng bản ghi đủ điều kiện trong một dòng duy nhất, do đó chúng ta cần sử dụng tùy chọn Multiline để xử lý JSON từ nhiều dòng.read records from multiple lines. By default, spark considers every record in a JSON file as a fully qualified record in a single line hence, we need to use the multiline option to process JSON from multiple lines.

Object json () trong Python là gì?

Ký hiệu đối tượng script Java (JSON) là định dạng dữ liệu trọng lượng nhẹ với nhiều điểm tương đồng với từ điển Python.Các đối tượng JSON rất hữu ích vì các trình duyệt có thể nhanh chóng phân tích chúng, điều này lý tưởng để vận chuyển dữ liệu giữa máy khách và máy chủ.a light weight data format with many similarities to python dictionaries. JSON objects are useful because browsers can quickly parse them, which is ideal for transporting data between a client and a server.