python - 从Web服务作为数组/列表返回的解析字符串(这是一个数组)

时间:2013-06-11 16:34:37

标签: python arrays string web-services parsing

我正在使用

httplib.HTTPConnection(self._myurl)
conn.request("GET", "/")
data = conn.getresponse().read()

现在这个URL返回一个类似于下面的python类型数组:

[1,"apple",23,"good"]
[2,"grape",4,"bad"]

现在我从服务中获取此结果作为数据中的字符串。如何将此结果直接解析/编码为数组/列表而不必自己剖析并创建数组?

2 个答案:

答案 0 :(得分:3)

如果服务器正在返回JSON(它看起来可能是这样),那么这很简单:

import json

# ... snip ...

rehydrated_data = json.loads(data)

答案 1 :(得分:0)

[更新]
服务实际上是为流而不是批量数据而设计的。这就是为什么我实际上获取对象数组而不是数组对象数组。

我最终使用以下逻辑在javascript端处理它。

1. data = data.replace(']','],')
2. data = '[' + data.rstrip(',') + ']'
3. data = json.loads(data)

回复上述回答
实际上不是,json将是

{"key":[[...],[...]]}

我已尝试过该代码但失败并出现以下错误。

...
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py", line 326, in loads
    return _default_decoder.decode(s)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 369, in decode
    raise ValueError(errmsg("Extra data", s, end, len(s)))
ValueError: Extra data: line 2 column 1 - line 38 column 119 (char 25 - 4048)