如何移除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
相关产品推荐
相关产品推荐

