如何将此 JSON 数组转换为 Python 字典? json.loads 返回类型错误

时间:2021-05-31 16:03:10

标签: python arrays json api

我正在使用一个新的股票市场 API——当用户提交订阅请求时,API 会返回特定股票代码的实时报价。这是返回的报价数据的格式:

import json

test_array = 'a[{"e":"md","d":{"quotes":[{"id":2065891,"timestamp":"2021-05-31T15:01:27.094Z","contractId":2065891,"entries":{"Bid":{"price":4193.5,"size":24},"TotalTradeVolume":{"size":89096},"Offer":{"price":4193.75,"size":50},"LowPrice":{"price":4192.25},"Trade":{"price":4193.5,"size":2},"OpenInterest":{"size":2600561},"OpeningPrice":{"price":4206.5},"HighPrice":{"price":4210.25},"SettlementPrice":{"price":4202.5}}}]}}]'

test_array_to_json = json.loads(test_array)

这是返回的错误:

Traceback (most recent call last):
  File "c:\Users\bentp\Desktop\Albert the Bot\jsonplayground.py", line 3, in <module>
    test_array_to_dict = json.loads(test_array)
  File "C:\users\bentp\appdata\local\programs\python\python39\lib\json\__init__.py", line 346, in loads
    return _default_decoder.decode(s)
  File "C:\users\bentp\appdata\local\programs\python\python39\lib\json\decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "C:\users\bentp\appdata\local\programs\python\python39\lib\json\decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

任何人都知道发生了什么,以及如何让它工作以返回 python 字典?非常感谢。我是新手编码员,如果你不知道的话。再次感谢!

1 个答案:

答案 0 :(得分:2)

删除数据中的第一个 a

import json

test_array = '[{"e":"md","d":{"quotes":[{"id":2065891,"timestamp":"2021-05-31T15:01:27.094Z","contractId":2065891,"entries":{"Bid":{"price":4193.5,"size":24},"TotalTradeVolume":{"size":89096},"Offer":{"price":4193.75,"size":50},"LowPrice":{"price":4192.25},"Trade":{"price":4193.5,"size":2},"OpenInterest":{"size":2600561},"OpeningPrice":{"price":4206.5},"HighPrice":{"price":4210.25},"SettlementPrice":{"price":4202.5}}}]}}]'

test_array_to_json = json.loads(test_array)

为我工作