Skip to main content
 首页 » 编程设计

python之使用 python 处理 JSON 文件

2025年05月04日34JeffreyZhao

我正在为 sublime text 开发一个插件,但在处理 json 文件时遇到了一些问题。

这是json文件

{ 
   "desktop":{ 
      "name":"build", 
      "upload":{ 
         "maximum":512, 
      }, 
      "load":{ 
         "core":"i7", 
      } 
   }, 
   "table":{ 
      "name":"clean", 
      "upload":{ 
         "maximum":1024, 
      }, 
      "load":{ 
         "core":"i3", 
      } 
   } 
} 

这是我加载它的方式

with open(self.path, 'r') as f: 
    text = f.read() 
    datas = json.loads(text) 
 
    for data in datas: 
        print(data['desktop']) 

输出告诉我这个错误

TypeError: string indices must be integers 

但是当我尝试使用 data[0] 时,我从 json 文件中得到了一个字符。

我知道我在解析和编码方面做错了,但我不知道在哪里。我整天都在阅读这里以前的帖子,并试图找出正确的方法。

我会很感激任何帮助。

请您参考如下方法:

首先您需要了解这不是 JSON 数组。这是一个 json 对象 -

{ 
   "desktop":{ 
      "name":"build", 
      "upload":{ 
         "maximum":512, 
      }, 
      "load":{ 
         "core":"i7", 
      } 
   }, 
   "table":{ 
      "name":"clean", 
      "upload":{ 
         "maximum":1024, 
      }, 
      "load":{ 
         "core":"i3", 
      } 
   } 
} 

所以代码-

for data in datas: 
    print(data['desktop']) 

不是遍历数组项,它实际上是遍历该对象 datas 的属性/属性。 所以这样做已经给了你项目 -

for data in datas: 
    print(datas[data]) 

但是如果你想操作并找到每个属性,你可以像这样检查 -

for data in datas: 
    print(data) 
    print(datas[data]) 
 
    if data == 'desktop': 
        print('do somthing') 

这是它的在线 View - https://repl.it/B61g

编辑

如果 datas 可以是数组或对象,你可以这样检查 -

if type(datas) is list: 
    # datas is list do whatever you like 
else: 
    # datas is obj