如何用Python批量递增JSON文件中的tokenId值?
问题分析与解决
错误原因
- 索引错误:你的JSON结构大概率是一个包含多个对象的列表(每个对象含
tokenId),此时data本身就是列表,不能用data['tokenId']这种字符串索引访问,这直接触发了TypeError。 - 运算错误:
tokenId是整数类型,不需要用字符串的replace方法,直接做加法运算即可,整数没有replace方法,这也是潜在错误。
修正后的代码
假设你的traits.json结构如下(最常见的情况):
[ {"tokenId": 0, "traits": {"color": "red"}}, {"tokenId": 1, "traits": {"color": "blue"}} ]
修正代码:
import json # 读取JSON文件 with open('traits.json') as f: data = json.load(f) # 遍历每个对象,给tokenId加1 for item in data: # 确保tokenId存在且是整数,避免额外报错 if 'tokenId' in item and isinstance(item['tokenId'], int): item['tokenId'] += 1 # 写入新文件,indent参数让输出JSON更易读 with open('new_data.json', 'w') as f: json.dump(data, f, indent=2)
特殊情况处理
如果你的JSON根对象里有一个列表字段(比如叫tokens),结构像这样:
{ "tokens": [ {"tokenId": 0, "traits": {...}}, {"tokenId": 1, "traits": {...}} ] }
那只需把循环部分改成:
for item in data['tokens']: if 'tokenId' in item and isinstance(item['tokenId'], int): item['tokenId'] += 1
内容的提问来源于stack exchange,提问作者CinziaG
相关产品推荐
相关产品推荐

