Próbuję serializować moje obiekty Python do JSON przy użyciu json.dumps
. Jeśli serializuje się dict
przy użyciu json.dumps
, będzie to oczywiście serializowane jako słownik JSON {..}
; jeśli serializuje się list
lub tuple
, będzie to tablica JSON.Jak przekonwertować Dython Dython do JSON jako listę, jeśli to możliwe
Chcę się dowiedzieć, czy istnieje jakikolwiek sposób łatwego serializowania Pythona dict
jako JSON list
, jeśli to możliwe. Przez jeśli to możliwe, to znaczy wtedy, gdy klucze zaczynają się od 0 i są wyświetlane sekwencyjnie, na przykład:
{0:'data',1:'data',2:'data}
Powyższy byłoby serializacji do JSON jako: '{"0": "data", "1": "data", "2": "data"}'
, ale chciałbym to być szeregowane jako ['data','data','data']
od kluczy zaczynają się od 0 i są sekwencjonowane.
Moje rozumowanie polega na tym, że mam dużo danych JSON, które są serializowane z PHP, gdzie w macierzy PHP są klucze i jeśli klucze są sekwencjonowane jak opisano powyżej, PHP json.encode
używa tablic, jeśli są one wpisane w inne są serializowane jako słowniki JSON. Chcę, aby moje serializacje JSON pasowały do mojego kodu PHP i Pythona. Niestety zmiana kodu PHP nie jest możliwa w moim przypadku.
Wszelkie sugestie? Jedyne rozwiązanie, jakie znalazłem, to napisanie własnej funkcji sprawdzania każdego słownika Pythona i sprawdzania, czy najpierw można go przekonwertować na list
przed json.dumps
.
EDIT: To obiekt, który mam szeregowania może być list
lub dict
, jak dobrze, to może mieć dodatkowe dicts wewnątrz niego i list, i tak dalej (zagnieżdżenia). Zastanawiam się, czy istnieje jakiś "prosty" sposób, aby to zrobić, w przeciwnym razie wierzę, że sam mogę napisać rozwiązanie rekurencyjne. Ale zawsze lepiej jest używać istniejącego kodu, aby uniknąć kolejnych błędów.
Nie jestem pewien, czy 'dict.values ()' będzie działać w py3k. Ponadto, FWIW, dykty nie są uporządkowanym typem danych, więc kolejność zserializowanej listy będzie dobrze zdefiniowana, ale "dowolna", nawet jeśli zrobisz 'json.dumps (list (dict.values ())) – mgilson