SELECT json_array_elements('["one", "two"]'::json)
gibt Ergebnis
| json_array_elements | | : ------------------ | | "eins" | | "zwei" |
Ich hätte gerne das gleiche, aber ohne die Anführungszeichen:
one
two
Sieht so aus, als könnte ich ->>
hier nicht verwenden , da ich keine Feldnamen im JSON habe. Es ist nur eine Reihe von Zeichenfolgen.
Postgres-Version: PostgreSQL 10.0 auf x86_64-apple-darwin, kompiliert von i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (basierend auf Apple Inc. Build 5658) (LLVM Build 2336.11.00), 64- bisschen
postgresql
json
postgresql-10
string-representation
Maxim Yefremov
quelle
quelle
Antworten:
Die Standard- Zwangsausgaben werden
json->text
mit einem doppelten Anführungszeichen ("
) ausgegeben, da Sie zum Erzwingen vontext
zu einerjson
Zeichenfolge Ihre Eingabe in doppelte Anführungszeichen setzen müssen. Verwenden Sie, um die doppelten Anführungszeichen zu entfernenTRIM
Wichtig ist jedoch, dass Sie dadurch an Nutzen verlieren. Alle JSONB-Typen werden in einer Textform zurückgegeben,
jsonb
mit der Sie mit demtext->jsonb
Zwang zurückkehren können. Es ist eine bijektive Mapping-Funktion. Das zu verlieren bedeutetnull
und"null"
ist dasselbe wie1
und"1"
.Interna ..
Wenn Sie wissen möchten, was passiert. Alle Typen können ein bereitstellen,
_out
das sie zutext
oder_send
zu einer binären Darstellung und einem Kehrwert führt_in
und_recv
das sie von diesen Formularen und Zuordnungen zurück zu den Typen führt. Hier bekommen Siejsonb_out
,jsonb_out
was anruftJsonbToCstring
JsonbToCstring
was anruftJsonbToCStringWorker
JsonbToCStringWorker
was anruftjsonb_put_escaped_value
jsonb_put_escaped_value(StringInfo out, JsonbValue *scalarVal)
was anruftescape_json
escape_json(StringInfo buf, const char *str)
das fügt"
das hinzu und es ist fest codiert. Kein anderer Weg.quelle
Ergebnis:
quelle
>>
kleine Erklärung: Die enthaltenen Operatoren scheinen einen JSON im Allgemeinen in nicht entkoppelten Text zu konvertieren: postgresql.org/docs/current/functions-json.html . Diese Antwort ist wahrscheinlich vorzuziehen, da das Escapezeichen wahrscheinlich nicht auf das Hinzufügen von Anführungszeichen beschränkt ist, sondern auch Anführungszeichen im Text und einige Sonderzeichen. Die obigen Beispiele enthalten zufällig keine. ("Wahrscheinlich", weil ich es nicht getestet habe.)#>>
ist das ein JSON-Operator, der ein Objekt an einem Pfad zurückgibt