如何在Postgres中将javascript对象转换为结构化jsonb?

如何在Postgres中将javascript对象转换为结构化jsonb?,javascript,json,postgresql,object,jsonb,Javascript,Json,Postgresql,Object,Jsonb,如果在我的应用层中有这样一个普通的js对象: {name:'amit',年龄:44岁,喜欢:['some','things']} 我只需对其执行JSON.stringify即可: “{”name:“amit”,“age”:44,“likes:[“some”,“things”]}” 但是我想在postgres db中的sql中这样做,它有一个jsonb列 我尝试过使用类似于的函数来实现json(失败),也尝试过像这样强制转换此对象: 选择“{name:'amit',年龄:44岁,喜欢:['so

如果在我的应用层中有这样一个普通的
js
对象:

{name:'amit',年龄:44岁,喜欢:['some','things']}
我只需对其执行JSON.stringify即可:

“{”name:“amit”,“age”:44,“likes:[“some”,“things”]}”
但是我想在postgres db中的sql中这样做,它有一个
jsonb

我尝试过使用类似于
的函数来实现json
(失败),也尝试过像这样强制转换此对象:

选择“{name:'amit',年龄:44岁,喜欢:['some','things']}”:jsonb
但这给了我一个错误:

ERROR: ERROR:  syntax error at or near "', age: 44, likes: ['"
LINE 8: SELECT '{ name: 'amit', age: 44, likes: ['some', 'things']}'.
如何将此对象转换为可存储在表的
jsonb
列中的结构化jsonb对象?

您的语法错误:)。Postgres不是JavaScript。Postgres json语法更接近Python的字典(需要引用键)。对键和字符串值使用双引号,而不是单引号。然后使用
::jsonb
将其转换为正确的jsonb格式

我不知道你为什么选错了

您的选择应该是:

选择“{”name:“amit”,“age”:44,“likes”:[“some”,“things”]}]::jsonb

console.log(JSON.stringify({name:'amit',age:44,likes:['some','things']}))您的语法错误:)。Postgres不是JavaScript。Postgres json语法更接近Python的字典(需要引用键)。对键和字符串值使用双引号,而不是单引号。然后使用
::jsonb
将其转换为正确的jsonb格式

我不知道你为什么选错了

您的选择应该是:

选择“{”name:“amit”,“age”:44,“likes”:[“some”,“things”]}]::jsonb


console.log(JSON.stringify({name:'amit',age:44,likes:['some','things']}))
您已经自己给出了答案:
JSON.stringify
。您需要向postgres发送有效的JSON,而不是js语法对象文字。顺便说一句,如果您的应用程序层中实际有一个对象,您是如何将其写入字符串
{name:'amit',age:44,likes:['some','things']}的“
首先?我只是在sql控制台中玩,希望有一个助手函数可供我使用,用于将对象解析和字符串化为jsonb对象,反之亦然,我不知道您在说什么。sql控制台中没有js对象。将对象字符串化为jsonb格式的函数是
JSON.stringify
。你说得对。我用了错误的方法你自己已经给出了答案:
JSON.stringify
。您需要向postgres发送有效的JSON,而不是js语法对象文字。顺便说一句,如果您的应用程序层中实际有一个对象,您是如何将其写入字符串
{name:'amit',age:44,likes:['some','things']}的“
首先?我只是在sql控制台中玩,希望有一个助手函数可供我使用,用于将对象解析和字符串化为jsonb对象,反之亦然,我不知道您在说什么。sql控制台中没有js对象。将对象字符串化为jsonb格式的函数是
JSON.stringify
。你说得对。我走错了方向