【问题标题】:Accidentally stored string instead of object in Postgres JSONB columnPostgres JSONB 列中意外存储的字符串而不是对象
【发布时间】:2016-02-12 21:22:25
【问题描述】:

我刚刚意识到插入 JSONB 列的数据是像 "{\"foo\": 3}" 这样的字符串,而不是像 {"foo": 3} 这样的对象。我很确定原因是由于将 SQLAlchemy 模型的字段设置为

reading.blob = blob_json

而不是

reading.blob = json.loads(blob_json)

不过,我还没有找到纠正现有数据的方法。 Postgres 文档提供了将文本转换为 JSON、从 JSON 中提取数组和对象元素等的示例,但我找不到任何显示如何选择只有一个字符串值的 JSONB 列的文本的内容。

【问题讨论】:

    标签: postgresql jsonb


    【解决方案1】:

    是的,就在我得到这个的时候:

    SELECT (('"{\"foo\":42}"'::JSONB)->>0)::JSONB;
    

    【讨论】:

      【解决方案2】:

      尤里卡! #postgres 上的 DeciBull 提出了

      SELECT (json_build_array('"{\"Stuff.Hello\": 0, \"Stuff.Hello2\": 1000}"'::jsonb)->>0)::jsonb
      
      {"Stuff.Hello": 0, "Stuff.Hello2": 1000}
      

      【讨论】:

        猜你喜欢
        • 2019-10-03
        • 2020-04-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-30
        相关资源
        最近更新 更多