繁体   English   中英

如何在 Postgres 中将 javascript 对象转换为结构化的 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 db 中的 sql 中执行此操作,该数据库有一个jsonb列。

我试过使用像to_json这样的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']}'.

如何将此对象转换为可以存储在表的jsonb列中的结构化 jsonb 对象?

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

JSON.stringify为此目的很好,我不知道为什么你的选择是错误的。

您的选择应该是:

SELECT '{ "name": "amit", "age": 44, "likes": ["some", "things"]}'::jsonb;

 console.log(JSON.stringify({ name: 'amit', age: 44, likes: ['some', 'things']}));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM