python提取json数据索引必须是整数_读取JSON字符串| TypeError:字符串索引必须是整数...

在尝试通过GUI读取并解析JSON字符串以执行数学方程解构的Python程序中,遇到了'TypeError: string indices must be integers'错误。该错误发生在尝试访问JSON对象的键时,这些键应该是整数而非字符串。程序首先读取JSON数据,然后递归地遍历结构以获取运算符。问题可能出在数据结构的访问方式上。
摘要由CSDN通过智能技术生成

我正在尝试创建一个程序,它将通过GUI读取JSON字符串,然后使用它来执行其他函数,在本例中分解一个数学方程。现在我发现了一个错误:"TypeError: string indices must be integers"

我也不知道为什么。

我试图读入的JSON如下:{

"rightArgument":{

"cell":"C18",

"value":9.5,

"type":"cell"

},

"leftArgument":{

"rightArgument":{

"cell":"C3",

"value":135,

"type":"cell"

},

"leftArgument":{

"rightArgument":{

"cell":"C4",

"value":125,

"type":"cell"

},

"leftArgument":{

"cell":"C5",

"value":106,

"type":"cell"

},

"type":"operation",

"operator":"*"

},

"type":"operation",

"operator":"+"

},

"type":"operation",

"operator":"+"

}import json

import tkinter

from tkinter import *

data = ""

list = []

def readText():

mtext=""

mtext = strJson.get()

mlabel2 = Label(myGui,text=mtext).place(x=180,y=200)

data = mtext

def mhello():

_getCurrentOperator(data)

def _getCurrentOperator(data):

if data["type"] == "operation":

_getCurrentOperator(data["rightArgument"])

_getCurrentOperator(data["leftArgument"])

list.append(data["operator"])

elif data["type"] == "group":

_getCurrentOperator(data["argument"])

elif data["type"] == "function":

list.append(data["name"]) # TODO do something with arguments

for i in range(len(data["arguments"])):

_getCurrentOperator(data["arguments"][i])

else:

if (data["value"]) == '':

list.append(data["cell"])

else:

list.append(data["value"])

print(list)

myGui = Tk()

strJson = StringVar()

myGui.title("Simple Gui")

myGui.geometry("400x300")

label = Label(text = 'Welcome!').place(x=170,y=40)

btnStart = Button(myGui,text='Start',command=mhello).place(x=210,y=260)

btnRead = Button(myGui,text='Read text',command=readText).place(x=210,y=200)

txtEntry = Entry(myGui, textvariable=strJson).place(x=150,y=160)

btnOptions = Button(myGui, text = "Options").place(x=150,y=260)

myGui.mainloop()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值