Python 的 json.loads 的数据输入必须是啥格式?
Posted
技术标签:
【中文标题】Python 的 json.loads 的数据输入必须是啥格式?【英文标题】:What format does data input have to be for Python's json.loads?Python 的 json.loads 的数据输入必须是什么格式? 【发布时间】:2016-06-09 23:40:38 【问题描述】:我正在尝试使用 json.loads
解析 Redshift 数据库表中的数据。我已经删除了在 Python 脚本中进行测试的函数,并且无法理解正在发生的事情。
我使用的代码是:
import json
j="'['Bars', 'American (Traditional)', 'Nightlife', 'Restaurants']'"
def trythis(item, reverse):
if not j:
return '1'
try:
arr = json.loads(j)
except ValueError:
return '2'
if not ascending:
arr = sorted(arr, reverse=True)
else:
arr = sorted(arr)
return json.dumps(arr)
print trythis(j, True)
这是返回2
。
我尝试将输入变量更改为j="['Bars', 'American (Traditional)', 'Nightlife', 'Restaurants']"
,但没有奏效。我的输入值需要是什么格式?
【问题讨论】:
啊,谢谢。您是否建议使用str.replace
之类的东西将内部单引号替换为双引号?
我只想将您对单引号的使用切换为双引号。阅读您的代码的任何人都不会感到困惑。
您不应该尝试手动创建 JSON,有许多细节您不太可能正确。使用从数据结构创建 JSON 的库函数,例如 json.dumps()
。
你的单引号列表是从哪里来的?
来自 Yelp 的数据集。
【参考方案1】:
您的输入字符串 j
不是有效的 JSON。 JSON 不允许使用单引号 ('
) 来表示字符串值。
尝试切换引号:'["Bars", "American (Traditional)", "Nightlife", "Restaurants"]'
JSON 规范是确定您的输入是否为有效 JSON 的绝佳资源。你可以在这里找到它:http://www.json.org/
【讨论】:
谢谢。数据实际上不是 JSON 格式,但在使用该函数之前,我能够在 SQL 端将单引号替换为双引号。不是最好的方法,但我需要的只是可行的方法。以上是关于Python 的 json.loads 的数据输入必须是啥格式?的主要内容,如果未能解决你的问题,请参考以下文章
python 读写json文件(dump, load),以及对json格式的数据处理(dumps, loads)
python 读写json文件(dump, load),以及对json格式的数据处理(dumps, loads)
python json.load和json.loads的区别
python中json.dumps()和json.dump() 以及 json.loads()和json.load()的区分