【问题标题】:How do I convert this list to a valid json object in Python 3.7?如何将此列表转换为 Python 3.7 中的有效 json 对象?
【发布时间】:2018-08-06 16:01:11
【问题描述】:

我需要将以下列表转换为有效的 JSON 对象:

data = ['{"id":"0","jsonrpc":"2.0","method":"RoutingRequest","params":{"barcode":"5694501","itemID":113},"timestamp":"2018-08-06T15:38:40.531"}', '']

我试过了:

import json

 my_json = data.decode('utf8').replace("'", '"')

 my_json = json.loads(my_json)

不断收到此错误:引发 TypeError(f'JSON 对象必须 是 str, bytes 或 bytearray, ' TypeError: JSON 对象必须是 str, 字节或字节数组,而不是列表

我做错了什么? (顺便说一句,我是 Python 新手)

【问题讨论】:

  • 如果要生成JSON,则需要对其进行编码。但是,它不会是 JSON 对象,而是 JSON 数组。你设想什么样的对象?另外,第一个列表元素不包含 JSON 吗?
  • 你想把它变成一个json对象吗?您已经有一个 json 对象,它是 data[0]。你想用它做什么?
  • 是否要将列表转换为 JSON 字符串,请使用 json.dumps(),反之则使用 json.loads()。您所拥有的似乎是列表中的 JSON 字符串。您必须先提取它。
  • 是的,第一个元素确实包含 JSON。我只需要解析出那个元素..谢谢 FHTMitchell...我现在明白了...

标签: python json


【解决方案1】:

您有一个数据列表。遍历它然后使用json.load

例如:

import json
data = ['{"id":"0","jsonrpc":"2.0","method":"RoutingRequest","params":{"barcode":"5694501","itemID":113},"timestamp":"2018-08-06T15:38:40.531"}', '']
data = [json.loads(i) for i in data if i]    #Iterate your list check if you have data then use json.loads
print(data)

输出:

[{u'params': {u'itemID': 113, u'barcode': u'5694501'}, u'jsonrpc': u'2.0', u'id': u'0', u'timestamp': u'2018-08-06T15:38:40.531', u'method': u'RoutingRequest'}]

【讨论】:

  • 你根本没有解释什么是错误的以及如何解决它
  • 感谢您的帮助。我现在明白了……这已经是一个清单了。数据[0]!
猜你喜欢
  • 1970-01-01
  • 2020-08-21
  • 1970-01-01
  • 1970-01-01
  • 2021-10-18
  • 2018-02-27
  • 2015-02-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多