【发布时间】:2014-12-18 12:01:03
【问题描述】:
我从标准输入得到这个字符串。
{u'trades':[自定义(时间=1418854520,sn=47998,时间戳=1418854517, price=322, amount=0.269664, tid=48106793, type=u'ask', 开始=1418847319,结束=1418847320),自定义(时间=1418854520,sn=47997, 时间戳=1418854517,价格=322,金额=0.1,tid=48106794, 类型=u'ask',开始=1418847319,结束=1418847320), 自定义(时间=1418854520,sn=47996,时间戳=1418854517,价格=321.596, 金额=0.011, tid=48106795, type=u'ask', start=1418847319, 结束=1418847320)]}
当我尝试访问jsonload["trades"] 时,我的程序失败了。如果我使用jsonload[0],我只会收到一个字符:{。
我检查了从stdin 获取文本不是问题,但我不知道这是接收格式的问题(因为我使用了 Incursion 库)还是我的 python 中的问题代码。我尝试了很多关于json.load/s 和json.dump/s 的组合,但都没有成功。
inputdata = sys.stdin.read()
jsondump = json.dumps(inputdata)
jsonload = json.loads(jsondump)
print jsonload
print type(jsonload) # return me "<type 'unicode'>"
print repr(jsonload) # return me same but with u" ..same string.... "
for row in jsonload["trades"]: # error here: TypeError: string indices must be integers
【问题讨论】:
-
您的
jsonload是string,而不是dict。 -
试试
jsonload = json.loads(inputdata)。 -
@jonrsharpe 它返回给我不同的错误“ValueError: Expecting property name: line 1 column 2 (char 1)”但是当运行 json.loads
-
那么你的
inputdata可能不是有效的JSON。 -
@tobias_k 我必须先转换为 dict 吗?