You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何移除JSON文件外层方括号以导入PostgreSQL jsonb字段?

移除JSON外层方括号的解决方案

方案一:写入文件前预处理响应数据

先解析接口返回的JSON,根据数组内容处理后再写入文件:

  • 如果数组仅包含单个对象:直接提取数组的第一个元素写入文件
  • 如果数组包含多个对象:将每个对象转为独立的JSON字符串,逐行写入(适合PostgreSQL批量导入)
import json
import requests

# 发送请求并解析响应为JSON对象
response = requests.get("你的目标接口地址")
response_json = response.json()

target_data = response_json
if isinstance(response_json, list):
    # 处理单个对象的数组
    if len(response_json) == 1:
        target_data = response_json[0]
    # 处理多个对象的数组,转为每行一个JSON对象的格式
    else:
        target_data = '\n'.join(json.dumps(item) for item in response_json)

# 写入文件(用原始字符串避免Windows路径转义问题)
with open(r"C:\DATA\outputfile.json", "a", encoding="utf-8") as f:
    if isinstance(target_data, str):
        f.write(target_data)
    else:
        json.dump(target_data, f)

方案二:修改已生成的JSON文件

如果文件已经保存,直接读取内容并移除首尾方括号:

with open(r"C:\DATA\outputfile.json", "r+", encoding="utf-8") as f:
    content = f.read().strip()
    # 移除首尾的方括号,兼容可能存在的首尾空格
    cleaned_content = content.lstrip('[').rstrip(']')
    # 覆盖写入并截断多余内容
    f.seek(0)
    f.write(cleaned_content)
    f.truncate()

方案三:PostgreSQL端直接处理(无需修改文件)

不想修改本地文件的话,可在导入时用PostgreSQL函数解析数组:

-- 先将文件内容导入临时表
CREATE TEMP TABLE temp_import (raw_data text);
COPY temp_import FROM 'C:\DATA\outputfile.json';

-- 展开JSON数组并插入目标表的jsonb字段
INSERT INTO your_target_table (your_jsonb_column)
SELECT jsonb_array_elements(raw_data::jsonb)
FROM temp_import;

内容的提问来源于stack exchange,提问作者TimB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 16:20:33