【发布时间】:2018-09-05 07:30:20
【问题描述】:
我发现很难将类似 json 的字符串转换为 json/dict 对象,我有这样的数据
{"key1":"value1","key2":[{"key2.1":"value2.1"},{"key2.2":"value2.2"}]}
在变量上运行 type 时,它告诉我它属于 str 类,即 <class 'str'>。我需要将字符串转换为 json 或 dict 之类的格式,以便提取所有名为 value 的值...
我试过json.loads、json.load、json.dumps、ast.literal_eval,但似乎没有任何效果。我尝试在字符串的任一侧添加[' 和'],但仍然没有运气。有任何想法吗?谢谢
编辑:
我正在使用nodeJS后端向flask服务器发送请求,nodeJS axios请求是这样的
get_values: (key_one, key_two) =>
axios.post('http://localhost:5000/example', {
key_one: key_one,
key_two: key_two
}).then(res => res.data),
在烧瓶方面我正在这样做
@app.route('/example', methods=["POST","OPTIONS"])
def example():
convert_data = request.get_data()
string_data = convert_data.decode('utf8').replace("'", '"')
new_string = "'''" + string_data + "'''"
print(json.loads(new_string))
然后我得到一个错误
【问题讨论】:
-
“似乎没有任何效果” - 它是如何失败的?你得到了什么?
json.loads和ast.literal_eval应该都可以在您的示例输入中正常工作。你确定他们失败了吗?示例:json.loads('{"key1":"value1","key2":[{"key2.1":"value2.1"},{"key2.2":"value2.2"}]}')产生预期的dict。 -
你提供的
{"key1":"value1","key2":[{"key2.1":"value2.1"},{"key2.2":"value2.2"}]}已经是dict了,为什么还要序列化呢? -
@ShadowRanger 运行,输出很长,最后一行是
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) -
@MaThMaX running
print(my_string.get('key1'))给出输出AttributeError: 'str' object has no attribute 'get' -
我用
s = '''{"key1":"value1","key2":[{"key2.1":"value2.1"},{"key2.2":"value2.2"}]}'''运行json.loads(s)。没问题。
标签: python json node.js python-3.x flask