def recv(): global users, friends while True: # 消息主循环 data = s.recv(1024) data = data.decode() msg = data.split(':;') if len(msg) == 1: # 是用户列表消息 data = json.loads(data) # 还原为列表对象 print(data) if data["type"] == "online_list": # 在线列表消息 users = data["data"] online_list.delete(0,tkinter.END) # 清空列表框 number = ' 在线用户:'+str(len(users)) online_list.insert(tkinter.END, number) online_list.itemconfig(tkinter.END, fg='green', bg='#f0f0ff') online_list.insert(tkinter.END, '===== 群聊 =====') online_list.insert(tkinter.END, 'Robot') online_list.itemconfig(tkinter.END, fg='green') for i in range(len(users)): online_list.insert(tkinter.END, users[i]) online_list.itemconfig(tkinter.END, fg='green') elif data["type"] == "friend_list": friends = data["data"] friend_list.delete(0, tkinter.END) # 清空好友列表框 number = ' 用户好友:' + str(len(friends)) friend_list.insert(tkinter.END, number) friend_list.itemconfig(tkinter.END, fg='green', bg='#f0f0ff') for i in range(len(friends)): friend_list.insert(tkinter.END, friends[i]) friend_list.itemconfig(tkinter.END, fg='green') 运行错误:data = json.loads(data) # 还原为列表对象,请修改上述代码
时间: 2024-02-04 22:02:13 浏览: 21
根据错误提示,代码中的 data 并不是一个 json 字符串,无法使用 json.loads() 方法进行解析。建议添加异常处理机制,如下所示:
```
def recv():
global users, friends
while True:
# 消息主循环
data = s.recv(1024)
data = data.decode()
msg = data.split(':;')
if len(msg) == 1:
try:
# 是用户列表消息
data = json.loads(data)
# 还原为列表对象
print(data)
if data["type"] == "online_list":
# 在线列表消息
users = data["data"]
online_list.delete(0,tkinter.END)
# 清空列表框
number = ' 在线用户:'+str(len(users))
online_list.insert(tkinter.END, number)
online_list.itemconfig(tkinter.END, fg='green', bg='#f0f0ff')
online_list.insert(tkinter.END, '===== 群聊 =====')
online_list.insert(tkinter.END, 'Robot')
online_list.itemconfig(tkinter.END, fg='green')
for i in range(len(users)):
online_list.insert(tkinter.END, users[i])
online_list.itemconfig(tkinter.END, fg='green')
elif data["type"] == "friend_list":
friends = data["data"]
friend_list.delete(0, tkinter.END)
# 清空好友列表框
number = ' 用户好友:' + str(len(friends))
friend_list.insert(tkinter.END, number)
friend_list.itemconfig(tkinter.END, fg='green', bg='#f0f0ff')
for i in range(len(friends)):
friend_list.insert(tkinter.END, friends[i])
friend_list.itemconfig(tkinter.END, fg='green')
except Exception as e:
print("Error occurred while parsing data: ", e)
```
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)