我想解析这个JSON数据,但我做不到。
JSON数据就像
我的代码是:
class NewEntry(ttk.Frame):
def __init__(self, master=None, **kw_ent, **kw_but):
ttk.Frame.__init__(self, master)
self.master = master
self.ent_var = tk.StringVar()
self.ent = ttk.Entry(self, textvariable=self.ent_var, **kw_ent)
self.ent.grid(row=0, column=0)
self.button = ttk.Button(self, text='Button', command=self.but_callback, **kw_but)
self.button.grid(row=0, column=1)
self.ent.bind('<FocusIn>', self.clear_ent)
self.init_vals()
def init_vals(self):
self.ent_var.set("Enter value")
self.ent['foreground'] = 'red'
def clear_ent(self, event):
self.ent_var.set('')
self.ent['foreground'] = '#4c4c4c'
def restore_ent(self, event):
self.init_vals()
def but_callback(self):
print(self.ent_var.get())
sleep(1)
self.init_vals()
root = tk.Tk()
a = NewEntry(root, width=13)
a.grid()
root.mainloop()
答案 0 :(得分:0)
根对象显然是字典([String:Any]
),而不仅仅是某些字段(Any
),并使用正确的错误处理和可选绑定来安全地打开选项。
键postdata
的值是一个字典数组([[String:Any]]
)。并且不要使用valueForKey
- 以及那些愚蠢的桥梁转向AnyObject
的方式 - 除非你能解释为什么你明确需要KVC。
.allowFragments
不需要,因为根对象是集合类型。
do {
if let jsonObj = try JSONSerialization.jsonObject(with: data) as? [String:Any],
let postdata = jsonObj["postdata"] as? [[String:Any]] {
for data in postdata {
for (key, value) in data {
print(key, value)
}
}
}
} catch {
print(error)
}