我将以下数据存储在一个PostgreSQL字段中,该字段被指定为文本,而不是JSON:
{"description_translated": "{\"en\": \"Description in English\", \"fr\": \"Descriptif en français\"}", "name_translated": "{\"en\": \"Name in English\", \"fr\": \"Nom en français\"}", "resource_lang": "English"}
应用程序将数据库中存储JSON的字段设置为文本字段。
我知道我可以提取一些"顶级"的内容,如"resource_lang",如下所示:
Select extras::json -> 'resource_lang'
但是如果我想得到'description_translated'的英文字符串,这两个都不起作用,都返回null:
一个二个一个一个
我试过这样的蠢事:
select extras::json -> 'description_translated'::json -> 'en' as desc_en
当然这是行不通的,那么有没有办法把嵌套的值取出来呢?
我想输出的是desc_en ="Description in English"
1条答案
按热度按时间9nvpjoqh1#
由于错误的json转换,您的文本字段以无效/格式错误的json结束,但可以通过几个替换来修复,如:
这样,它将返回值“Description in英语”
在这里拨弄