![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 132 Pomógł: 0 Dołączył: 10.12.2003 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Mam dane json, przykładowo:
Zapisuje je do bazy MySQL, do pola typu json. I po zapisie w polu mam wartość:
Jak widać przy zapisie dane zostały znormalizowane - posortowane wg. klucza. Czy da się to jakoś wyłączyć tak aby kolejność kluczy z oryginalnego json została zachowana również w polu tabeli MySQL? Powyższy json to tylko przykład, w rzeczywistości danych jest więcej i są dynamiczne (różne wartości i kolejności). Dane mają wyświetlane dokładnie wg. tej kolejności jak mam w oryginale - posortowanie przy zapisie to uniemożliwia. Ten post edytował jol.us_ 18.10.2017, 11:55:48 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 132 Pomógł: 0 Dołączył: 10.12.2003 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Generalnie klucze nie są z góry zdefiniowane. Ich kolejność za każdym razem może być inna - cała właśnie zasada działania jest w tym.
Potem kolejność wyświetlania na stronie jest taka sama jak kolejność kluczy. Obecnie, w uproszczeniu, działa to tak. Zapis 1. Mam formularz z różnymi polami, które są sortowane przez użytkownika (wraz z zagnieżdżeniami). 2. Wysyłam formularz, a tablice POST traktuje funkcja json_encode i zapisuję do bazy danych - do pola format longtext. Edycja 1. Odczytuje jsona z bazy danych 2. Parsuje jsona i na jego podstawie generuje formularz edycji w tej samej kolejności i z tymi samymi zagnieżdżeniami Do tej pory wszystko działało jak należy. Jednak teraz pojawiła się potrzeba przeszukiwania mojego json po niektórych kluczach - noi tutaj stwierdziłem, że najlepiej będzie jak zmienię typ pola na json i użyje sobie m. in. funkcji json_extract. Jednak okazało się, że zapisując dane do typu pola json (zamiast do longtext) mysql normalizuje dane i sortuje je wg klucza (alfabetycznie) - przez co niweczy mi całe generowanie formularza edycji. Ten post edytował jol.us_ 19.10.2017, 10:18:11 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 28.09.2025 - 03:23 |