Hallo,
wolte heute JSON mit PostgreSQL ausprobieren.
Dafür habe eine Tabelle erstellt und mit Daten befüllt.
Der Inhalt der Spalten “inhalt und inhalt_json” ist valide JSON-Format.
Die Abfragen mit der Spalte “inhalt_json” funktionieren.
SELECT inhalt_json->>‘Hobbys’ FROM jsontest WHERE ID = 2
SELECT * FROM json_each_text((SELECT inhalt_json FROM jsontest where ID=2));
Die gleichen Ergebnisse will ich durch SELECT(siehe oben) an der Spalte “inhalt” des Text-Datentyps erreichen.
Der Grund wieso ich den Datentyp Text und nicht JSON genommen habe => nicht alle ORMs unterstützen den JSON- oder hstore-Datentyp.
Mein Gedanke war den Inhalt der Spalte “inhalt” mit der Methode to_json zu konvertieren und das Zwischenerbebnis im Select weiter zu verwenden, aber es geht irgendwie nicht.
select to_json(inhalt) from jsontest;
Ich komme nicht weiter.
Geht es überhaupt ohne ein JSON-Datentyp zu verwenden?
Wie kann man dies erreichen?
Hat jemand Erfahrung damit gemacht?
Habt ihr ein paar konkrete Beispiele für mich?
CREATE TABLE jsontest
(
id serial NOT NULL,
inhalt text,
inhalt_json json,
CONSTRAINT jsontest_pkey PRIMARY KEY (id)
)
insert into jsontest (inhalt, inhalt_json) Values(’{“Name”:“Person1”,“Vorname”:“John”,“Hobbys”:[“Musik”,“Sport”,“Angeln”,“Jagen”]}’, ‘{“Name”:“Person1”,“Vorname”:“John”,“Hobbys”:[“Musik”,“Sport”,“Angeln”,“Jagen”]}’);
insert into jsontest (inhalt, inhalt_json) Values(’{“Name”:“Person2”,“Vorname”:“Jürgen”,“Hobbys”:[“Sport”,“Jagen”]}’, ‘{“Name”:“Person2”,“Vorname”:“Jürgen”,“Hobbys”:[“Sport”,“Jagen”]}’);
insert into jsontest (inhalt, inhalt_json) Values(’{“Name”:“Person3”,“Vorname”:“Viktor”,“Hobbys”:[“Sport”]}’, ‘{“Name”:“Person3”,“Vorname”:“Viktor”,“Hobbys”:[“Sport”]}’);