Hướng dẫn copy json object in python - sao chép đối tượng json trong python

Sau khi bị đình chỉ, MU sẽ không thể bình luận hoặc xuất bản các bài đăng cho đến khi bị đình chỉ.

Sau khi không được nghi ngờ, MU sẽ có thể bình luận và xuất bản các bài đăng một lần nữa.

Sau khi chưa được công bố, tất cả các bài đăng của MU sẽ trở nên ẩn và chỉ có thể truy cập được.

Nếu MU không bị đình chỉ, họ vẫn có thể xuất bản lại các bài đăng của họ từ bảng điều khiển của họ.

Note:

Sau khi chưa được công bố, bài đăng này sẽ trở nên vô hình đối với công chúng và chỉ có thể truy cập vào Muthetechie.

Họ vẫn có thể xuất bản lại bài nếu họ không bị đình chỉ.

Cảm ơn vì đã giữ cho cộng đồng Dev 👩‍💻👨‍💻 an toàn. Đây là những gì bạn có thể làm để gắn cờ MU:

Làm cho tất cả các bài viết của MU ít nhìn thấy

MU liên tục đăng nội dung vi phạm Bộ quy tắc ứng xử của cộng đồng Dev vì nó đang quấy rối, tấn công hoặc spam.

MU không có khả năng sẽ khôi phục khả năng hiển thị mặc định cho các bài đăng của họ.

Tôi đang có dữ liệu JSON, trong đó một số khóa có nhiều hơn một giá trị. Tôi muốn tạo một bản sao của Json Body và thêm nó vào Main JSON.

Ví dụ, trong given.json của tôi, số có hai giá trị 156 và 158 và tương ứng. Tôi muốn tạo bản sao và thêm nó, vui lòng xem kết quả expected.json của tôi.

given.json

[{"fields": {"Start": "yes1",
   "number": [156, 158],
   "time": 1600,
   "total": 8}}]

expected.json

[{"fields": {"Start": "yes1",
   "number": [156],
   "time": 1600,
   "total": 8}},
 {"fields": {"Start": "yes1",
   "number": [158],
   "time": 1600,
   "total": 8}}]

Python

import json

# Opening JSON file
f = open('given.json',)

# returns JSON object as
# a dictionary
main_data = json.load(f)

my_dict = []

main_data[0]["fields"]["number"] = 156
main_data_1 = []
main_data_1.append(main_data)
my_dict.append(main_data_1)

main_data[0]["fields"]["number"] = 158
main_data_2 = []
main_data_2.append(main_data)

my_dict.append(main_data_2)

print(my_dict)

Mã nguồn: lib/copy.py Lib/copy.py


Các câu lệnh gán trong Python không sao chép các đối tượng, chúng tạo ra các ràng buộc giữa mục tiêu và đối tượng. Đối với các bộ sưu tập có thể thay đổi hoặc chứa các mục có thể thay đổi, đôi khi một bản sao là cần thiết để người ta có thể thay đổi một bản sao mà không thay đổi cái kia. Mô -đun này cung cấp các hoạt động sao chép nông và sâu chung (giải thích bên dưới).

Tóm tắt giao diện:

________ 5 ________ 6 (x)(x)

Trả lại một bản sao nông của x.

________ 5 ________ 8 (x [, Memo])(x[, memo])

Trả lại một bản sao sâu của x.

Ngoại lệ ________ 5 ________ 10¶

Được nâng lên cho các lỗi cụ thể của mô -đun.

Sự khác biệt giữa sao chép nông và sâu chỉ có liên quan đến các đối tượng hỗn hợp (các đối tượng có chứa các đối tượng khác, như danh sách hoặc trường hợp lớp):

  • Một bản sao nông xây dựng một đối tượng hợp chất mới và sau đó (trong phạm vi có thể) chèn các tham chiếu vào nó vào các đối tượng được tìm thấy trong bản gốc.

  • Một bản sao sâu xây dựng một đối tượng hợp chất mới và sau đó, đệ quy, chèn các bản sao vào nó của các đối tượng được tìm thấy trong bản gốc.

Hai vấn đề thường tồn tại với các hoạt động sao chép sâu mà don lồng tồn tại với các hoạt động sao chép nông:

  • Các đối tượng đệ quy (các đối tượng hợp chất, trực tiếp hoặc gián tiếp, chứa một tham chiếu đến chính chúng) có thể gây ra một vòng lặp đệ quy.

  • Bởi vì bản sao sâu sao chép mọi thứ mà nó có thể sao chép quá nhiều, chẳng hạn như dữ liệu dự định được chia sẻ giữa các bản sao.

Hàm

[{"fields": {"Start": "yes1",
   "number": [156],
   "time": 1600,
   "total": 8}},
 {"fields": {"Start": "yes1",
   "number": [158],
   "time": 1600,
   "total": 8}}]
1 tránh những vấn đề này bằng cách:

  • Giữ một từ điển

    [{"fields": {"Start": "yes1",
       "number": [156],
       "time": 1600,
       "total": 8}},
     {"fields": {"Start": "yes1",
       "number": [158],
       "time": 1600,
       "total": 8}}]
    
    2 của các đối tượng đã được sao chép trong quá trình sao chép hiện tại; và

  • Cho phép các lớp do người dùng xác định ghi đè hoạt động sao chép hoặc tập hợp các thành phần được sao chép.

Mô -đun này không sao chép các loại như mô -đun, phương thức, dấu vết ngăn xếp, khung ngăn xếp, tệp, ổ cắm, cửa sổ hoặc bất kỳ loại tương tự nào. Nó không sao chép các chức năng và các lớp (nông và sâu), bằng cách trả về đối tượng ban đầu không thay đổi; Điều này tương thích với cách chúng được xử lý bằng mô -đun

[{"fields": {"Start": "yes1",
   "number": [156],
   "time": 1600,
   "total": 8}},
 {"fields": {"Start": "yes1",
   "number": [158],
   "time": 1600,
   "total": 8}}]
3.

Các bản sao nông của từ điển có thể được thực hiện bằng cách sử dụng

[{"fields": {"Start": "yes1",
   "number": [156],
   "time": 1600,
   "total": 8}},
 {"fields": {"Start": "yes1",
   "number": [158],
   "time": 1600,
   "total": 8}}]
4 và các danh sách bằng cách gán một lát của toàn bộ danh sách, ví dụ,
[{"fields": {"Start": "yes1",
   "number": [156],
   "time": 1600,
   "total": 8}},
 {"fields": {"Start": "yes1",
   "number": [158],
   "time": 1600,
   "total": 8}}]
5.

Các lớp có thể sử dụng các giao diện tương tự để kiểm soát sao chép mà họ sử dụng để kiểm soát Pickling. Xem mô tả của mô -đun

[{"fields": {"Start": "yes1",
   "number": [156],
   "time": 1600,
   "total": 8}},
 {"fields": {"Start": "yes1",
   "number": [158],
   "time": 1600,
   "total": 8}}]
3 để biết thông tin về các phương pháp này. Trên thực tế, mô -đun
[{"fields": {"Start": "yes1",
   "number": [156],
   "time": 1600,
   "total": 8}},
 {"fields": {"Start": "yes1",
   "number": [158],
   "time": 1600,
   "total": 8}}]
7 sử dụng các hàm Pickle đã đăng ký từ mô -đun
[{"fields": {"Start": "yes1",
   "number": [156],
   "time": 1600,
   "total": 8}},
 {"fields": {"Start": "yes1",
   "number": [158],
   "time": 1600,
   "total": 8}}]
8.

Để một lớp xác định triển khai bản sao của riêng mình, nó có thể xác định các phương thức đặc biệt

[{"fields": {"Start": "yes1",
   "number": [156],
   "time": 1600,
   "total": 8}},
 {"fields": {"Start": "yes1",
   "number": [158],
   "time": 1600,
   "total": 8}}]
9 và
import json

# Opening JSON file
f = open('given.json',)

# returns JSON object as
# a dictionary
main_data = json.load(f)

my_dict = []

main_data[0]["fields"]["number"] = 156
main_data_1 = []
main_data_1.append(main_data)
my_dict.append(main_data_1)

main_data[0]["fields"]["number"] = 158
main_data_2 = []
main_data_2.append(main_data)

my_dict.append(main_data_2)

print(my_dict)
0. Cái trước được gọi để thực hiện hoạt động sao chép nông; Không có lập luận bổ sung được thông qua. Cái sau được gọi để thực hiện hoạt động sao chép sâu; Nó được thông qua một đối số, từ điển
[{"fields": {"Start": "yes1",
   "number": [156],
   "time": 1600,
   "total": 8}},
 {"fields": {"Start": "yes1",
   "number": [158],
   "time": 1600,
   "total": 8}}]
2. Nếu việc triển khai
import json

# Opening JSON file
f = open('given.json',)

# returns JSON object as
# a dictionary
main_data = json.load(f)

my_dict = []

main_data[0]["fields"]["number"] = 156
main_data_1 = []
main_data_1.append(main_data)
my_dict.append(main_data_1)

main_data[0]["fields"]["number"] = 158
main_data_2 = []
main_data_2.append(main_data)

my_dict.append(main_data_2)

print(my_dict)
0 cần tạo một bản sao sâu của một thành phần, nó sẽ gọi hàm
[{"fields": {"Start": "yes1",
   "number": [156],
   "time": 1600,
   "total": 8}},
 {"fields": {"Start": "yes1",
   "number": [158],
   "time": 1600,
   "total": 8}}]
1 với thành phần là đối số đầu tiên và từ điển ghi nhớ là đối số thứ hai. Từ điển ghi nhớ nên được coi là một đối tượng mờ đục.

Xem thêm

Mô -đun
[{"fields": {"Start": "yes1",
   "number": [156],
   "time": 1600,
   "total": 8}},
 {"fields": {"Start": "yes1",
   "number": [158],
   "time": 1600,
   "total": 8}}]
3

Thảo luận về các phương pháp đặc biệt được sử dụng để hỗ trợ truy xuất và phục hồi trạng thái đối tượng.

Làm thế nào để bạn sao chép JSON trong Python?

Giải pháp cuối cùng: Open ("oput.json", "w"). Viết (mở ("input.json"). Đọc ()) - C2H5OH. Ngày 19 tháng 4 năm 2012 lúc 23:20 ..
result = json.Load (urllib.urropen ("mysite.com/test1.json")) file = open ("current.json", 'w') #để xóa nội dung của tệp file.write (kết quả) tệp. đóng () - ilias. Ngày 19 tháng 4 năm 2012 lúc 23:22 ..

Copy () làm gì trong Python?

Định nghĩa và cách sử dụng.Phương thức Copy () trả về một bản sao của danh sách được chỉ định.returns a copy of the specified list.

Làm thế nào để bạn sao chép sâu một đối tượng trong Python?

Để tạo một bản sao sâu, hãy sử dụng hàm DeepCopy () của mô -đun sao chép.Trong một bản sao sâu, các bản sao được chèn thay vì các tham chiếu đến các đối tượng, do đó, việc thay đổi cái này không thay đổi cái kia.use the deepcopy() function of the copy module. In a deep copy, copies are inserted instead of references to objects, so changing one does not change the other.

Làm thế nào để bạn truy cập một đối tượng JSON trong Python?

Thật dễ dàng để tải một đối tượng JSON trong Python.Python có một gói tích hợp có tên JSON, có thể được sử dụng để làm việc với dữ liệu JSON.Nó được thực hiện bằng cách sử dụng mô -đun JSON, cung cấp cho chúng tôi rất nhiều phương thức trong số các phương thức tải () và tải () sẽ giúp chúng tôi đọc tệp JSON.using the JSON module, which provides us with a lot of methods which among loads() and load() methods are gonna help us to read the JSON file.