如何从python中的JSON文件中获取值

2024-05-16 20:45:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我要你请求你的帮助

我需要浏览包含json文件的文件夹,并且需要搜索一个具有特定值的属性

这是我的密码:

def listDir():
fileNames = os.listdir(FOLDER_PATH)
for fileName in fileNames:
    print(fileName)
    with open('C:\\Users\\Kamčo\\Desktop\\UBLjsons\\' + fileName, 'r') as json_file:
        data = json.load(json_file)
        data_json = json.dumps(data, indent=2, sort_keys=True)
        print(data_json)
        for line in data_json:
            if line['ID'] == 'Kamilko':
                print("try") #just to be sure it accessed to this

我得到这个错误:TypeError:字符串索引必须是整数

我还试图寻找一个解决方案,但没有帮到我

这是我的JSON

{
"Invoice": {
    "@xmlns": "urn:oasis:names:specification:ubl:schema:xsd:Invoice-2",
    "@xmlns:cac": "urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2",
    "@xmlns:cbc": "urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2",
    "ID": "Kamilko",
    "IssueDate": "2020-02-09",
    "OrderReference": {
      "ID": "22"
     },
    "InvoiceLine": {
      "Price": {
        "PriceAmount": {
          "@currencyID": "EUR",
          "#text": "23.50"
         },
        "BaseQuantity": {
          "@unitCode": "C62",
          "#text": "1"
         }
       }
    }
  }
}

你知道怎么做吗


Tags: idjsonfordatanamesschemafilenamespecification
1条回答
网友
1楼 · 发布于 2024-05-16 20:45:05

您已使用json.load(...)加载了您的文件。这将把JSON数据转换成Python字典,您可以使用它访问元素:

if data["Invoice"]["OrderReference"]["ID"] == 22:
   print("try")

请注意,您可能希望检查相关的键是否存在,以防文件的结构发生变化,或者您可以使用try/except捕获键不存在时出现的KeyError

更多背景:

然后,当您调用json.dumps(...)时,您使用了方便的python结构,并再次将其转换回难以理解的字符串。我认为你不想也不需要这样做

出现的特定错误是因为dumps创建了一个字符串。然后尝试使用[ ]操作符访问该字符串的元素。字符串只能使用整数进行索引,例如mystr[4],因此Python不理解您要求它如何处理data_json["ID"]

相关问题 更多 >