Python 我试图从json文件导入数据,但它会生成;TypeError:字符串索引必须是整数;错误:json文件如下所示

Python 我试图从json文件导入数据,但它会生成;TypeError:字符串索引必须是整数;错误:json文件如下所示,python,json,Python,Json,答案评论中的代码: 这就是我使用的全部代码 从tkinter导入* 导入json data=“” priceList=“” 以open('C:\RecoveryImage\\data.json')作为json\u数据: data=json.load(json_数据) data=json.dumps(数据,缩进=1) 价格表=数据[0][“销售价格”] root=Tk() root.title(“价格查看器”) 显示=帧(根) Display.pack() text=标签(显示,text=数据)t

答案评论中的代码:

这就是我使用的全部代码

从tkinter导入*
导入json
data=“”
priceList=“”
以open('C:\RecoveryImage\\data.json')作为json\u数据:
data=json.load(json_数据)
data=json.dumps(数据,缩进=1)
价格表=数据[0][“销售价格”]
root=Tk()
root.title(“价格查看器”)
显示=帧(根)
Display.pack()
text=标签(显示,text=数据)text.pack()

root.mainloop()

您必须首先将字符串转换为等效的json结构

[
    {
        "SALE_PRICE": "$699.95"
    },
    {
     "SALE_PRICE": "$89.95"
    },
    {
    "SALE_PRICE": "$399.95"
    },
    {
    "SALE_PRICE": "$969.95"
    },
    {
    "SALE_PRICE": "$1,563.42"
    },
    {
    "SALE_PRICE": "$299.95"
    },
    {
       "SALE_PRICE": null
    },
    {
    "SALE_PRICE": "$429.95"
    },
    {
    "ORIGINAL_PRICE": null
    },
    {
    "SALE_PRICE": "$529.95"
    }
]
此外,我可以看到您使用了“null”


在文件中使用“None”与python中的“null”等价物。

以下是相关代码的格式化版本,并附有我的注释:

import json

data = json.loads(file_data)
print data[0]["SALE_PRICE"] #Will now print the value
该语句所做的只是(希望)生成原始
json_数据的语法相同的副本,而不是使用它。不幸的是,它还导致
数据
引用该冗余信息


删除罪魁祸首行,或者使其以
json\u data\u 2=
开头,而不是
data=

null在python中不是一种类型。您可以将它们更改为None或在其周围加上引号“null”True,但是null是Python的None的JS表示,这不是问题所在。我倾向于导入数据的后续处理欢迎使用。请复习。您需要添加实际代码和关联的堆栈跟踪。请参考我尝试过,但仍然生成相同的错误。我甚至尝试过删除空条目,但仍然不行。也许是因为密码的缘故吧?@jonathan我们没有办法帮你,除非你把它贴出来让我们看看。请检查我使用的代码。这是我在tkinter import*import json data=“”priceList=“”中使用的完整代码,其中open('C:\RecoveryImage\\data.json')作为json\u data:data=json.load(json\u data)data=json.dumps(data,indent=1)priceList=data[0][“SALE\u PRICE”]root=Tk()root.title(“价格查看器”)Display=Frame(root)Display.pack()text=Label(Display,text=data)text.pack()root.mainloop(),但它仍会生成相同的错误。@jonathan请编辑您的问题以包含代码,并将其格式化为可读。然后添加堆栈跟踪和完整的错误消息。
from tkinter import *
import json
data = "" ### redundant statement
priceList = "" ### redundant statement
with open('C:\RecoveryImage\\data.json') as json_data:
    data = json.load(json_data) ### This 'data' refers to a list of dicts.
    data = json.dumps(data, indent=1) ### This statement is the culprit.
    priceList = data[0]["SALE_PRICE"] ### Expecting `data` to be a list of dicts, not a str
    root = Tk() # etc etc