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

如何移除JSON中locations对象的数字索引并保留原有内容?

解决JSON对象转数组(移除数字索引)的几种方案

这是个非常常见的JSON结构转换需求,根据你使用的场景不同,我整理了几种实用的解决办法:

1. 前端/Node.js环境(JavaScript)

如果是在代码里处理,ES6+的Object.values()方法是最简洁的方案,直接提取对象的所有值组成数组:

// 假设你的原始数据是这样的
const rawData = {
  "locations": { 
    "0": { "locationNo": "10014", "inventoryLocationNo": "10014" }, 
    "1": { "locationNo": "10499", "inventoryLocationNo": "10499" }, 
    "2": { "locationNo": "110868", "inventoryLocationNo": "110868" } 
  }
};

// 一步转换
rawData.locations = Object.values(rawData.locations);

// 输出格式化后的JSON
console.log(JSON.stringify(rawData, null, 2));

运行后就能得到你想要的数组结构,Object.values()会自动忽略对象的键,只保留值,完美匹配需求。

2. 命令行环境(用jq工具)

如果你需要批量处理JSON文件,jq是处理JSON的神器,一条命令就能搞定:

# 把input.json中的locations转换为数组,输出到output.json
jq '.locations = [.locations[]]' input.json > output.json

解释一下:.locations[]会遍历locations对象的所有子项,用[]包裹就变成了数组,再赋值回locations字段,直接得到合法的JSON结构。

3. Python脚本处理

如果用Python做数据处理,借助内置的json模块就能轻松完成:

import json

# 读取原始JSON文件
with open('input.json', 'r', encoding='utf-8') as f:
    data = json.load(f)

# 将locations对象转为数组
data['locations'] = list(data['locations'].values())

# 写入格式化后的JSON文件
with open('output.json', 'w', encoding='utf-8') as f:
    json.dump(data, f, indent=2, ensure_ascii=False)

Python字典的values()方法会返回所有值的集合,转成列表就是JSON数组的形式,最后dump的时候加上indent=2可以让输出更美观。

4. 手动修改(数据量小的情况)

如果你的JSON数据量不大,直接手动修改也是最快的:

  • 把locations后面的{改成[,结尾的}改成]
  • 删掉所有的"0":、"1":、"2":这类数字键
  • 检查逗号位置,确保每个对象之间只有一个逗号,最后一个对象后面没有逗号

比如修改前:

"locations": { 
  "0": { "locationNo": "10014", "inventoryLocationNo": "10014" }, 
  "1": { "locationNo": "10499", "inventoryLocationNo": "10499" }, 
  "2": { "locationNo": "110868", "inventoryLocationNo": "110868" } 
}

修改后:

"locations": [ 
  { "locationNo": "10014", "inventoryLocationNo": "10014" }, 
  { "locationNo": "10499", "inventoryLocationNo": "10499" }, 
  { "locationNo": "110868", "inventoryLocationNo": "110868" } 
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:32:50