Hướng dẫn python traverse json tree - con trăn đi ngang cây json
Hãy nói rằng chúng tôi có tệp JSON sau. Vì lợi ích của ví dụ, nó được mô phỏng bởi một chuỗi. Chuỗi là đầu vào và đối tượng Show 0 phải là đầu ra. Tôi sẽ sử dụng ký hiệu đồ họa của cây để trình bày đầu ra.Tôi đã tìm thấy các lớp sau để xử lý khái niệm cây trong Python:
Tệp đầu vào có thể có độ phức tạp khác nhau: Trường hợp đơn giảnInput: 1Output:
Trường hợp nhúngĐầu vào: 2Output:
Trường hợp mảngInput: 3Output:
Xin lưu ý rằng mỗi mục trong một mảng được mô tả với một số nguyên (bắt đầu từ 1). Cho đến nay tôi đã xoay sở để đưa ra chức năng sau đây giải quyết vấn đề cho trường hợp đơn giản. Về mặt trường hợp nhúng, tôi biết rằng tôi phải sử dụng đệ quy nhưng cho đến nay tôi nhận được 4.
Nền tảng của vấn đềBạn có thể tự hỏi tại sao tôi cần thay đổi một đối tượng JSON thành cây. Như bạn có thể biết PostgreSQL cung cấp một cách để xử lý các trường JSON trong cơ sở dữ liệu. Đưa ra một đối tượng JSON, tôi có thể nhận được giá trị của bất kỳ trường nào bằng cách sử dụng ký hiệu 5 và 6. Ở đây và ở đây nhiều hơn về chủ đề. Tôi sẽ tạo các bảng mới dựa trên tên và giá trị của các trường. Thật không may, các đối tượng JSON khác nhau đến mức tôi không thể viết mã 7 theo cách thủ công - tôi phải tìm cách tự động thực hiện nó.Giả sử rằng tôi muốn tạo một bảng dựa trên trường hợp nhúng. Tôi cần nhận mã 7 sau: 4Thay thế 9 cho 0 và bạn có thể thấy rằng mỗi dòng trong mã SQL chỉ đơn giản là một đường truyền đầu tiên từ "gốc" sang một chiếc lá (chuyển từ nút cuối cùng sang lá luôn được chú thích bằng 6).Chỉnh sửa: Để làm cho câu hỏi rõ ràng hơn, tôi sẽ thêm truy vấn 7 mục tiêu cho trường hợp mảng. Tôi muốn có nhiều truy vấn như có các yếu tố trong mảng: 9Giải pháp cho đến nay (07.05.2019)Tôi đang thử nghiệm giải pháp hiện tại cho thời điểm này: 0Tôi hiện đang làm việc trên một JSON như thế này: 1Trong đầu ra, tôi nhận được phần tử hằng số duy nhất là thứ tự các dòng được xử lý bằng logic mảng. Thứ tự của các dòng khác khác nhau. Đầu ra tôi muốn nhận là một thứ có tính đến thứ tự của các khóa: 2 |