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

如何将Python生成的多边形坐标JSON重排为指定格式?

如何将多边形坐标序列重排为指定JSON格式?

我来帮你搞定这个JSON格式转换的问题!你的原代码是把每个多边形坐标直接转成字符串逐行写入,这和目标格式差得有点远,咱们一步步调整:

核心思路

  1. 先搭建好目标JSON的整体结构:包含Message、Status、Result三个顶级字段
  2. 遍历每个多边形框,把一维的坐标序列拆成[x,y]形式的顶点数组
  3. 把每个多边形的顶点对应到Result下的索引键(比如"0"、"1"),每个顶点再用"0"-"3"作为子键存储坐标
  4. 最后一次性将完整的字典结构写入文件,而不是逐行输出字符串

完整实现代码

import json
import numpy as np

# 假设res_file是你的输出文件路径,boxes是输入的多边形列表
def generate_target_json(res_file, boxes):
    # 初始化目标JSON结构
    target_data = {
        "Message": "success",
        "Status": 1,
        "Result": {}
    }
    
    # 遍历每个多边形框
    for idx, box in enumerate(boxes):
        # 将box转成int32类型,再重排成N个[x,y]的顶点数组
        poly = np.array(box).astype(np.int32).reshape((-1, 2))
        # 构建当前多边形的顶点字典,键为"0"-"3"
        poly_dict = {str(i): list(vertex) for i, vertex in enumerate(poly)}
        # 将当前多边形添加到Result中,键为多边形的索引字符串
        target_data["Result"][str(idx)] = poly_dict
    
    # 将完整结构写入文件,indent=4保证格式美观,ensure_ascii=False支持特殊字符
    with open(res_file, 'w', encoding='utf-8') as f:
        json.dump(target_data, f, indent=4, ensure_ascii=False)

关键细节说明

  • reshape((-1, 2)):把一维的坐标序列(比如[x1,y1,x2,y2,x3,y3,x4,y4])自动拆分成4个[x,y]的顶点数组,完美匹配你的目标格式
  • 用字典推导式{str(i): list(vertex)...}快速生成每个多边形的顶点键值对
  • 最后一次性写入整个字典,避免原代码中逐行写入字符串导致的JSON格式错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:28:26