如何处理 JSON 响应

how to deal with JSON response

本文关键字:JSON 响应 处理 何处理      更新时间:2023-09-26

我正在使用Python websockets返回JSON对象(我认为),但是我不确定如何处理响应。我有一个使用 JavaScript 的示例,它使用 parseJSON,下面是一个片段:

socket = io.connect("__socket address__");
socket.on("connect", function() {socket.emit("subscribe_areas", areas)});
var d = jQuery.parseJSON(c);
console.log(d);
d.type == "INTERPOSE";

返回我可以访问的数据,例如 d.type == "INTERPOSE";:

Object {area: "BE", type: "MOVE", to: "0109", from: "0107", value: "2L65"}
Object {area: "BE", type: "MOVE", to: "0113", from: "0109", value: "2L65"}

作为我的蟒蛇,我收到:

(u'{"area":"EH","type":"INTERPOSE","to":"B243","value":""}',)
(u'{"area":"EH","type":"INTERPOSE","to":"0337","value":""}',)
(u'{"area":"EH","type":"INTERPOSE","to":"0085","value":""}',)

为什么 python 返回括在括号和逗号中的 JSON?我的蟒蛇是下面的:

from socketIO_client import SocketIO
import logging
import json
def on_connect():
    print('CONNECTED')
    areas = ['EH']
    socketIO.emit('subscribe_areas', areas)
def on_message(*answer):
    print(answer)
socketIO = SocketIO('_address_', _port_)
socketIO.on('connect', on_connect)
socketIO.on('message', on_message)
socketIO.wait()

我尝试使用json.load,json.loads,json.decode进行解码,但收到各种错误。我错过了什么,为什么退货被包裹在括号中等等?

你告诉 Python 需要 0 个或多个参数:

def on_message(*answer):
    print(answer)
然后 Python 给你一个传入的所有参数的元组

;你的 print 语句显示你有一个参数,所以你得到一个只有一个元素的元组。该元素是您可以使用json.loads()解码的 JSON 字符串。

获取第一个元素并对其进行解码:

def on_message(*answer):
    print(json.loads(answer[0]))

或者不要使用 * 并要求传入一个参数,始终从该参数加载

def on_message(answer):
    print(json.loads(answer))