如何将 javascript 对象转换为 Postgres 中的结构化 jsonb?
How do I convert a javascript object to structured jsonb in Postgres?
如果我的应用程序层中有一个像这样的普通 js
对象:
{ name: 'amit', age: 44, likes: ['some', 'things']}
我会在上面做一个 JSON.stringify 得到:
"{"name":"amit","age":44,"likes":["some","things"]}"
但我想在我的 postgres 数据库中的 sql 中执行此操作,它有一个 jsonb
列。
我试过使用像 to_json
这样的函数(失败了),也试过像这样转换这个对象:
SELECT '{ name: 'amit', age: 44, likes: ['some', 'things']}'::jsonb
但这给了我一个错误:
ERROR: ERROR: syntax error at or near "', age: 44, likes: ['"
LINE 8: SELECT '{ name: 'amit', age: 44, likes: ['some', 'things']}'.
如何将此对象转换为可以存储在我的 table 的 jsonb
列中的结构化 jsonb 对象?
你的语法有误:)。 Postgres 不是 JavaScript。 Postgres json 语法更接近于 Python 的字典(需要引用键)。对键和字符串值使用双引号而不是单引号。然后使用 ::jsonb
将其转换为正确的 jsonb 格式。
JSON.stringify 就可以了,我不知道为什么你的 select 是错误的。
您的 select 应该是:
SELECT '{ "name": "amit", "age": 44, "likes": ["some", "things"]}'::jsonb;
console.log(JSON.stringify({ name: 'amit', age: 44, likes: ['some', 'things']}));
如果我的应用程序层中有一个像这样的普通 js
对象:
{ name: 'amit', age: 44, likes: ['some', 'things']}
我会在上面做一个 JSON.stringify 得到:
"{"name":"amit","age":44,"likes":["some","things"]}"
但我想在我的 postgres 数据库中的 sql 中执行此操作,它有一个 jsonb
列。
我试过使用像 to_json
这样的函数(失败了),也试过像这样转换这个对象:
SELECT '{ name: 'amit', age: 44, likes: ['some', 'things']}'::jsonb
但这给了我一个错误:
ERROR: ERROR: syntax error at or near "', age: 44, likes: ['"
LINE 8: SELECT '{ name: 'amit', age: 44, likes: ['some', 'things']}'.
如何将此对象转换为可以存储在我的 table 的 jsonb
列中的结构化 jsonb 对象?
你的语法有误:)。 Postgres 不是 JavaScript。 Postgres json 语法更接近于 Python 的字典(需要引用键)。对键和字符串值使用双引号而不是单引号。然后使用 ::jsonb
将其转换为正确的 jsonb 格式。
JSON.stringify 就可以了,我不知道为什么你的 select 是错误的。
您的 select 应该是:
SELECT '{ "name": "amit", "age": 44, "likes": ["some", "things"]}'::jsonb;
console.log(JSON.stringify({ name: 'amit', age: 44, likes: ['some', 'things']}));