Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [mysql][php] Pole typu json, problem z normalizacją
jol.us_
post
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:
  1. {"tytul":"Tytul","kolor":"#ffffff","zdjecie":"test.jpg"}


Zapisuje je do bazy MySQL, do pola typu json.
I po zapisie w polu mam wartość:
  1. {"kolor": "#ffffff", "tytul": "Tytul", "zdjecie": "test.jpg"}


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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
trueblue
post
Post #2





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Zawsze możesz wybierać wszystkie rekordy, a warunek dla JSON umieścić już po stronie skryptu. Ale czy to będzie bardzie eleganckie? Czasem redundancji danych nie da się uniknąć.

Czekaj czekaj.
Jeśli dobrze zrozumiałem, to jest tak jak wyżej. Czyli JSON_EXTRACT używasz w WHERE, tak?
W takim razie przechowuj JSON w polu TEXT, a dla potrzeb WHERE i JSON_EXTRACT użyj CAST na tym polu. Wyselekcjonujesz odpowiednie rekordy, a JSON nadal będzie w oryginalnej postaci.
Jeśli mój tok rozumowania jest niepoprawny, to wyjaśnij proszę w jakim celu na poziomie zapytania używasz JSON_EXTRACT.

Ten post edytował trueblue 19.10.2017, 10:52:54
Go to the top of the page
+Quote Post

Posty w temacie
- jol.us_   [mysql][php] Pole typu json   18.10.2017, 11:54:36
- - nospor   obiektu json NIE posortujesz (mam na mysli ze nie ...   18.10.2017, 12:03:59
- - jol.us_   Właśnie mi chodzi o to aby nie były sortowane i zo...   18.10.2017, 12:28:04
- - nospor   CytatWłaśnie mi chodzi o to aby nie były sortowane...   18.10.2017, 12:29:33
- - viking   Zapisz jako tekst (przykładowo mariadb i tak json ...   18.10.2017, 12:38:03
- - nospor   @viking ale wowczas przy decode i tak dostanie zmi...   18.10.2017, 12:39:42
- - jol.us_   No to bryndza Liczyłem, że może da sie to jakoś ...   18.10.2017, 12:45:44
- - nospor   Nie wierze, Tez mialem z tym problem. Rozwiazanie...   18.10.2017, 12:52:36
- - jol.us_   Tak jak proponował @viking już mam. Właśnie chcia...   18.10.2017, 12:55:17
- - trueblue   Czy oryginalna kolejność oznacza, że raz możesz mi...   19.10.2017, 07:53:57
- - jol.us_   Cytat(trueblue @ 19.10.2017, 08:53:57...   19.10.2017, 08:11:29
- - trueblue   No, ale nie odpowiedziałeś na pytanie. Czy dany kl...   19.10.2017, 08:44:12
- - jol.us_   Generalnie klucze nie są z góry zdefiniowane. Ich ...   19.10.2017, 10:17:20
- - trueblue   Ok, czyli każdy JSON traktujemy odrębnie, nawet je...   19.10.2017, 10:23:03
- - jol.us_   Tak, też zacząłem tak kombinować. Trzymać gdzieś j...   19.10.2017, 10:33:03
- - trueblue   W jakim momencie potrzeba Ci tak kolejność? Gdzie ...   19.10.2017, 10:33:42
- - jol.us_   1. W formularzu edycji - generując formularz danyc...   19.10.2017, 10:35:12
- - trueblue   W takim razie możesz przechowywać oryginalną kopię...   19.10.2017, 10:40:23
- - jol.us_   Trzymanie 2 razy danych to mało eleganckie. Wiem,...   19.10.2017, 10:44:22
- - trueblue   Zawsze możesz wybierać wszystkie rekordy, a warune...   19.10.2017, 10:49:49
- - jol.us_   Tak używam tylko w WHERE . [PHP] pobierz, plainte...   19.10.2017, 10:58:57
- - trueblue   [SQL] pobierz, plaintext SELECT pole_json, inne_po...   19.10.2017, 11:02:50
- - jol.us_   Genialne. Dokładnie to czego potrzebowałem. Dzięki...   19.10.2017, 11:15:14
- - Pilsener   Kod{"kolor": "#ffffff", "z...   20.10.2017, 07:40:58
- - jol.us_   Cytat(Pilsener @ 20.10.2017, 08:40:58...   20.10.2017, 13:57:49


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 27.09.2025 - 22:57