无法解析嵌套字典

时间:2017-11-06 07:47:09

标签: json swift xcode

我想解析这个JSON数据,但我做不到。

JSON数据就像

jsondata

我的代码是:

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()

1 个答案:

答案 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)
       }