2017-11-06 1 views
0

Ich habe dieses Update, ich postgresql Dokumentation gelesen haben, aber nichts klar darüber, wie Daten einzufügen, einige Tutorials Möglichkeiten:Einsatz jsonb Daten in postgresql, Option Array oder Objekte, gültige Weise

1.with '{}' 
2.with {} 
3.with '[]' <-- array of objects 

und die meisten nicht‘Verwendung ':: jsonb' wie angezeigt auf:

https://www.postgresql.org/docs/9.4/static/datatype-json.html

hier mein Code:

UPDATE customer set phones ='{ {"type": "mobile", "phone": "001001"} , 
{"type": "fix", "phone": "002002"} }'::jsonb 
    where id ='4ca27243-6a55-4855-b0e6-d6e1d957f289'; 

ich diesen Fehler:

ERROR: invalid input syntax for type json 
LINE 1: UPDATE customer set phones ='{ {"type": "mobile", "phone": ... 
            ^
DETAIL: Expected string or "}", but found "{". 
CONTEXT: JSON data, line 1: { {... 
SQL state: 22P02 
Character: 29 

Ich brauche nur eine von Telefonen beleuchtet aufzunehmen, müssen wie in einem großen Namen Objekt einzuschließen? Ich meine für Javascript, Array von Objekten ist kein Objekt, aber ich weiß nicht, ob das in Jsonb von postresql akzeptiert wird

{Handys: [{"Typ": "Handy", "Telefon": "001001"} , {"Typ": "Fix", "Telefon": "002002"}]}

Antwort

0

'{}' ist Array-Typ in Postgres. wenn Sie jsonb verwenden, verwenden Sie regelmäßig '[]' für Array:

so=# select jsonb_pretty('{"phones":[ {"type": "mobile", "phone": "001001"} , {"type": "fix", "phone": "002002"} ] }'); 
jsonb_pretty 
{ 
    "phones": [ 
     { 
      "type": "mobile", 
      "phone": "001001" 
     }, 
     { 
      "type": "fix", 
      "phone": "002002" 
     } 
    ] 
} 
(1 row) 
Time: 0.486 ms 

oder:

so=# select jsonb_pretty('[ {"type": "mobile", "phone": "001001"} , {"type": "fix", "phone": "002002"} ]'); 
jsonb_pretty 
[ 
    { 
     "type": "mobile", 
     "phone": "001001" 
    }, 
    { 
     "type": "fix", 
     "phone": "002002" 
    } 
] 
(1 row) 
Verwandte Themen