Xóa đối tượng JSON khỏi mảng JSON Python

Tôi muốn xóa bất kỳ cặp khóa/giá trị JSON nào trong đó giá trị là chuỗi rỗng "" hoặc là chuỗi ký tự null. Tuy nhiên, kiểu liệt kê trong Java không thích điều đó và sẽ tạo ra lỗi ConcurrentModificationException nếu bạn cố gắng xóa khóa và giá trị

JSONArray ja = loadJSONArray();
JSONObject firstJSON = ja.getJSONObject(0);
Iterator iter = firstJSON.keys();
for (int i = 0; i < ja.length(); i++) {
	JSONObject json = ja.getJSONObject(i);
	while (iter.hasNext()) {
		String key = iter.next().toString();
		if (json.getString(key).equals("null")) {
			json.remove(key);
		}
	}
}

đầu ra

Exception in thread "main" java.util.ConcurrentModificationException
	at java.util.LinkedHashMap$LinkedHashIterator.nextNode(LinkedHashMap.java:711)
	at java.util.LinkedHashMap$LinkedKeyIterator.next(LinkedHashMap.java:734)
	at JSONKeyRemover.removeKeyWhileIterating(JSONKeyRemover.java:32)
	at JSONKeyRemover.main(JSONKeyRemover.java:69)

Tôi đã kết thúc việc sao chép mảng JSON vào một bộ sưu tập Java và sử dụng phương pháp JSONObject.names() để lấy một JSONArray khóa

Vì vậy, hãy xem cách tìm kiếm đối tượng theo id và xóa đối tượng đó khỏi mảng JSON trong javascript, jquery tìm đối tượng theo id trong một mảng, xóa phần tử khỏi đối tượng JSON, xóa đối tượng khỏi mảng JSON jquery, mảng JSON xóa phần tử

Phương thức này được sử dụng để giải tuần tự hóa một tệp thành đối tượng Python, trong khi phương thức này được sử dụng để giải tuần tự hóa chuỗi JSON thành đối tượng Python

Bước tiếp theo là lặp lại danh sách và kiểm tra xem một khóa trong mỗi từ điển có một giá trị cụ thể không

Khi chúng tôi tìm thấy từ điển phù hợp, chúng tôi phải sử dụng phương pháp list.pop() để xóa nó khỏi danh sách

Phương thức loại bỏ mục tại vị trí nhất định trong danh sách và trả về nó

Bạn cũng có thể thêm câu lệnh break nếu bạn chỉ muốn xóa từ điển

Exception in thread "main" java.util.ConcurrentModificationException
	at java.util.LinkedHashMap$LinkedHashIterator.nextNode(LinkedHashMap.java:711)
	at java.util.LinkedHashMap$LinkedKeyIterator.next(LinkedHashMap.java:734)
	at JSONKeyRemover.removeKeyWhileIterating(JSONKeyRemover.java:32)
	at JSONKeyRemover.main(JSONKeyRemover.java:69)
0 khỏi danh sách

    for idx, obj in enumerate(my_list):
        if obj['id'] == 2:
            my_list.pop(idx)
            break

Điều này giúp bạn tiết kiệm thời gian trong các lần lặp lại không cần thiết nếu từ điển ở đầu danh sách

Bước cuối cùng là mở một tệp mới (

Exception in thread "main" java.util.ConcurrentModificationException
	at java.util.LinkedHashMap$LinkedHashIterator.nextNode(LinkedHashMap.java:711)
	at java.util.LinkedHashMap$LinkedKeyIterator.next(LinkedHashMap.java:734)
	at JSONKeyRemover.removeKeyWhileIterating(JSONKeyRemover.java:32)
	at JSONKeyRemover.main(JSONKeyRemover.java:69)
1) trong ví dụ, nối tiếp danh sách thành
Exception in thread "main" java.util.ConcurrentModificationException
	at java.util.LinkedHashMap$LinkedHashIterator.nextNode(LinkedHashMap.java:711)
	at java.util.LinkedHashMap$LinkedKeyIterator.next(LinkedHashMap.java:734)
	at JSONKeyRemover.removeKeyWhileIterating(JSONKeyRemover.java:32)
	at JSONKeyRemover.main(JSONKeyRemover.java:69)
2 và ghi nó vào tệp

Làm cách nào để xóa đối tượng JSON khỏi mảng JSON trong Python?

Để xóa một đối tượng JSON khỏi danh sách. .
Phân tích cú pháp đối tượng JSON thành danh sách từ điển Python
Sử dụng hàm enumerate() để lặp qua lặp lại trong danh sách
Kiểm tra xem mỗi từ điển có phải là từ bạn muốn xóa hay không và sử dụng phương thức pop() để xóa từ chính tả phù hợp

Làm cách nào để xóa một đối tượng JSON khỏi mảng JSON?

Bạn có thể xóa một phần tử khỏi đối tượng JSONArray bằng phương thức remove() . Phương thức này chấp nhận một số nguyên và xóa phần tử trong chỉ mục cụ thể đó.

Làm cách nào để xóa dữ liệu JSON trong Python?

Để xóa cái đầu tiên, bạn có thể sử dụng list. xóa (mục) hoặc danh sách. pop(0) hoặc danh sách xóa[0] .

Làm cách nào để xóa khóa khỏi đối tượng JSON trong Python?

Đang xóa khóa. cặp giá trị sử dụng pop(). .
chìa khóa là chìa khóa để được gỡ bỏ
Không ai chỉ định rằng nếu tìm thấy khóa thì hãy xóa nó. Khác, không làm gì cả
Chúng tôi cũng có thể chỉ định một thông báo tùy chỉnh thay cho 'Không' đối với các trường hợp không tìm thấy khóa