Aktualizacja pola json w Postgres

Sprawdzanie Postgres 9.3 przez pole json jest naprawdę świetne. Jednak nie mogłem znaleźć formalnego sposobu aktualizacji obiektu json, dla którego używam funkcji wewnętrznej zapisanej wplpythonu na podstawie poprzedniego posta (Jak zmodyfikować pola w nowym typie danych JSON PostgreSQL?):

CREATE OR REPLACE FUNCTION json_update(data json, key text, value json)
RETURNS json AS
$BODY$
   from json import loads, dumps
   if key is None: return data
   js = loads(data)
   js[key] = value
   return dumps(js)
$BODY$
LANGUAGE plpythonu VOLATILE

Działa bardzo dobrze, gdy moje aktualizacje json pozostają spłaszczone i proste. Powiedz „czat” jest typem json wpisanym w tabeli „GO_SESSION” i zawiera{"a": "1", "b": "2"}, zmieni się następujący kod'b' wartość i włącz czat{"a": "1", "b": "5"}

update "GO_SESSION" set chat=json_update(chat,'b','5') where id=3

Problem polega na tym, że próbuję to ustalić'b' inny obiekt zamiast prostej wartości:

update "GO_SESSION" set chat=json_update(chat,'b','{"name":"steve"}') where id=3

Wynik w bazie danych jest'b' zawierający ciąg znaków ucieczki zamiast prawdziwego obiektu json:

{„a”: „1”, „b”: „{” ”nazwa”: „steve”} ”}

Próbowałem różnych sposobów, aby oderwać lub zrzucić mój json, aby zachować „b” obiekt, ale nie mogłem znaleźć rozwiązania.

Dziękuję Ci

questionAnswers(3)

yourAnswerToTheQuestion