Ya agreed thats not legal JSON, that was typing mistake sorry for that, let me make you clear what i need exactly,
I have table named (exampleTable) with json field as (example_list), and when i say SELECT * FROM exampleTable; id | example_list ---+---------------------------------------------- 2 | {"abc":[ { "a":"b","c":"d" } ] } And this data i am inserting through DJango view by writing the following statement test = ExampleTable(id = 2, example_list = {"abc" : [ { "a":"b","c":"d" } ] }) test.save() now i want to append { "e":"f", "g":"h" } to example_list by specifying the id. and after appending the data should be stored in the following way : After appending, for example if i say : SELECT * FROM exampleTable; i should get this. id | example_list ---+-------------------------------------------------------- 2 | {"abc":[ { "a":"b","c":"d" }, { "e":"f", "g":"h" } ] } Hope your clear now. So now Guide me to append it through Python Djnago View. or through raw sql query. On Wed, Oct 29, 2014 at 12:45 PM, Michael Paquier <michael.paqu...@gmail.com > wrote: > On Wed, Oct 29, 2014 at 3:42 PM, VENKTESH GUTTEDAR > <venkteshgutte...@gmail.com> wrote: > > As i am new to postgresql, i am learning through experimenting > things. > > > > i have a table with json data type field, so there is some data for > > example : > > > > { [ { a:b, b:c } ] } > > > > and now if i append data then it should be like : > > > > { [ { a:b, b:c }, { e:f, g:h } ] } > That's not legal JSON, no? A key needs to be appended for the array > defined, like that: > =# select '{"f1":[{ "a":"b", "b":"c" }]}'::json; > json > ------------------------------- > {"f1":[{ "a":"b", "b":"c" }]} > (1 row) > > > Is there any way to achieve this. please help.! > > I have Postgresql 9.3.5. > Er, you can use the concatenate operator || to achieve that: > =# select '{"a":"b","b":"c"}'||','||'{"e":"f","f":"g"}'::json; > ?column? > ------------------------------------- > {"a":"b","b":"c"},{"e":"f","f":"g"} > (1 row) > > You may prefer actually something that really merges everything, among > many methods here is one (not the fastest one, now on the top of my > mind): > =# with union_json as ( > select * from json_each('{"a":"b","b":"c"}'::json) > union all > select * from json_each('{"d":"e","e":"f"}'::json)) > select '{'||string_agg(to_json(key)||':'||value, ',')||'}' > from union_json; > ?column? > ----------------------------------- > {"a":"b","b":"c","d":"e","e":"f"} > (1 row) > > Regards, > -- > Michael > -- Regards : Venktesh Guttedar.