我对Python还很陌生,所以我的问题是:
我正在进行HTTP调用来获取使用Javascript创建的一些JSON数据。这个JSON可能有一些值,如"nan"
、"inf"
或"-inf"
作为字符串。这些值的键和深度是未知的。我想在Python中找到这些值并将它们替换为float("nan")
或float("inf")
的Python等效项。
由于据说无法更改Javascript方面的任何内容,因此不能在Javascript方面做任何更改。
我使用以下函数读取HTTP响应并返回JSON等效项:
def http_response_to_json(response):
response_str = ""
CHUNK = 16 * 1024
while True:
try:
chunk = response.read(CHUNK)
if not chunk:
break
response_str += chunk
except httplib.IncompleteRead, e:
response_str += e.partial
return json.loads(response_str)
我已经阅读了关于
json.loads
的object_hook
参数,但我不确定如何使用它。附注:我仍在使用Python 2。
谢谢。
isinstance(dirty_data, str)
更改为isinstance(dirty_data, basestring)
才能使其正常工作。你知道为什么吗? - XeniaSistype("test")
和type(json.loads('{"a": "123"}')["a"])
检查类型时,它们都显示为str
,所以我不知道为什么你的结果会不同。 - Leounicode
而不是str
。如果你仍在使用Python 2,这可能是原因。 - Leo