Es sieht so aus, als ob meine PSQL-Datenbank einige falsch formatierte JSON-Felder enthält. Daher kann ich diese Daten nicht mit den Operatoren - >> abrufen.psql - Abrufen von JSON-Daten, die Sonderzeichen enthalten
Ich habe eine Tabelle mit der Spalte "Reputation" des Typs Json.
Ich führe Abfrage „Ruf“ Spalte für ein bestimmtes Objekt zu erhalten:
select reputation from hashes where sha1='c1b5684e132a85d18a35ddb98233cc2b71efcf0e'
ich folgendes Ergebnis erhalten, die wie json mit Escape-Zeichen formatiert aussieht:
"{\"status\": \"MALICIOUS\", \"scanner_match\": 33, \"first_seen\": \"2010-05-27T09:00:27\", \"scanner_count\": 34, \"last_seen\": \"2010-05-27T09:00:27\"}"
Allerdings, wenn ich versuche ein bestimmtes feld in diesem json zu bekommen, bekomme ich nichts:
select reputation->>status from hashes where sha1='c1b5684e132a85d18a35ddb98233cc2b71efcf0e'
ich a lso versucht, die folgende Abfrage zu überprüfen, wie psql diese json behandelt und erhielt Fehler:
select * from json_each((select reputation from hashes where sha1='c1b5684e132a85d18a35ddb98233cc2b71efcf0e'));
ERROR: cannot deconstruct a scalar
So sieht es aus wie psql nicht dies als json erkennen. Wenn ja, habe ich ein paar Fragen:
- Wenn dies ist ungültig JSON-Format, wie ist es dann möglich, dass PSQL ermöglicht es uns, schlecht formatierte JSON zu JSON-Typ Spalte einfügen?
- Ist es irgendwie möglich, auf diese JSON-Felder im bestehenden Zustand zuzugreifen (vielleicht mit einigen Sonderzeichen in den Namen)?