Tôi đang cố gắng tuần tự hóa các đối tượng Python của mình vào JSON bằng cách sử dụng json.dumps
. Nếu bạn tuần tự hóa một dict
sử dụng json.dumps
, nó rõ ràng sẽ được tuần tự hóa dưới dạng từ điển JSON {..}
; nếu bạn tuần tự hóa list
hoặc tuple
, nó sẽ là một mảng JSON.Làm thế nào để chuyển đổi Python dict sang JSON dưới dạng danh sách, nếu có thể
Tôi muốn biết nếu có bất kỳ cách nào để dễ dàng tuần tự hóa một Python dict
dưới dạng JSON list
, nếu có thể. Bởi nếu có thể, tôi có nghĩa là nếu các phím bắt đầu từ 0 và được sắp xếp, ví dụ:
{0:'data',1:'data',2:'data}
Trên đây sẽ được tuần tự vào JSON như: '{"0": "data", "1": "data", "2": "data"}'
, nhưng tôi muốn nó được tuần tự như ['data','data','data']
từ các phím bắt đầu từ 0 và được sắp xếp theo trình tự. Lý do của tôi cho điều này là vì tôi có rất nhiều dữ liệu JSON được tuần tự hóa từ PHP, trong đó các mảng PHP có khóa và nếu các khóa được sắp xếp theo trình tự như trên, PHP json.encode
sử dụng mảng, nếu chúng được khóa theo cách thức, chúng được tuần tự hóa dưới dạng từ điển JSON. Tôi muốn serialization JSON của tôi để phù hợp cho cả hai mã PHP và Python của tôi. Thật không may, việc thay đổi mã PHP không phải là một tùy chọn trong trường hợp của tôi.
Mọi đề xuất? Giải pháp duy nhất tôi đã tìm thấy là viết chức năng của riêng tôi để đi qua và xác minh từng từ điển python và xem liệu nó có thể được chuyển đổi thành list
trước json.dumps
hay không.
EDIT: Đối tượng này mà tôi serializing có thể là một list
hoặc một dict
, là tốt, nó có thể có thêm dicts bên trong của nó, và danh sách, và vân vân (tổ). Tôi tự hỏi nếu có cách nào đơn giản để làm điều này, nếu không tôi tin rằng tôi có thể viết một giải pháp đệ quy bản thân mình. Nhưng nó luôn luôn tốt hơn để sử dụng mã hiện có để tránh lỗi hơn.
Tôi không chắc chắn nếu 'dict.values ()' sẽ hoạt động trong py3k. Ngoài ra, FWIW, dicts không phải là kiểu dữ liệu được sắp xếp, do đó thứ tự của danh sách được sắp xếp theo thứ tự sẽ được xác định rõ, nhưng "tùy ý" ngay cả khi bạn làm 'json.dumps (list (dict.values ()))' – mgilson