Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 字符串到dict/json格式_Python_Json_Node.js_Python 3.x_Flask - Fatal编程技术网

Python 字符串到dict/json格式

Python 字符串到dict/json格式,python,json,node.js,python-3.x,flask,Python,Json,Node.js,Python 3.x,Flask,我发现很难将类似json的字符串转换为json/dict对象,我得到了如下数据 {"key1":"value1","key2":[{"key2.1":"value2.1"},{"key2.2":"value2.2"}]} 在变量上运行type时,它告诉我它属于str类,即。我需要将字符串转换成json或类似dict的格式,以便提取所有名为value的值 我尝试了json.load、json.load、json.dumps、ast.literal\u eval,但似乎没有任何效果。我试着在字符串

我发现很难将类似json的字符串转换为json/dict对象,我得到了如下数据

{"key1":"value1","key2":[{"key2.1":"value2.1"},{"key2.2":"value2.2"}]}
在变量上运行type时,它告诉我它属于str类,即。我需要将字符串转换成json或类似dict的格式,以便提取所有名为value的值

我尝试了json.load、json.load、json.dumps、ast.literal\u 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))

然后我得到一个错误,不确定我是否正确理解了这个问题。但是,假设您有一个字符串,如下所示:

变量a={ 键1:值1, 关键2:[{ 键2.1:值2.1 }, { 键2.2:值2.2 }] }

然后你可以这样做:

try {
  const dictionary = JSON.parse(a)

  console.log(dictionary.key1) // This will print value1

  Object.keys(dictionary).map((key) => {
    console.log(dictionary[key]);
  });

} catch(e){
    // do something with error here
}

我稍微修改了你的函数:

@app.route('/example', methods=["POST","OPTIONS"])
def example():
  convert_data = request.get_data()
  string_data = convert_data.decode('utf8')
  print(json.loads(string_data))
看来string_数据已经是一个格式完美的json字符串,您可以将其传递到加载中。我删除了对“which似乎没有必要,而且肯定添加了”,这将使该字符串成为Python多行字符串文字语法,但肯定会破坏json兼容性,这也是您的错误告诉您的:

json.decoder.JSONDecodeError:预期值:第1行第1列字符0


这应该更接近你想要的。否则,请在运行此操作时让我知道字符串\u数据的确切内容。

似乎没有任何功能-它是如何失败的?你得到了什么?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}]}已经是dict,为什么还需要序列化它?@ShadowRanger正在运行,它给出了一个长输出,最后一行是json.decoder.jsondeCoderror:期望值:第1行第1列字符0@MaThMaX运行printmy_string.get'key1'会给出输出AttributeError:'str'对象没有属性'get',我使用s='{key1:value1,key2:[{key2.1:value2.1},{key2.2:value2.2}]}“。没问题。它不是python。它在最后一行,即请求时的第一行遇到错误错误:之后是关于随机库调用的一个相当大的错误,然后以raise JSONDECODERORRERROPEATING value,s,err.value from None结束json.DECODECODE.JSONDecodeError:预期值:第1行第1列字符0运行我获取的typestring_数据时输出是{key1:value1,key2:[{key2.1:value2.1},{…实际上看起来不错。可能是编码…你试过string_data=request.get_dataas_text=True吗?请求本身工作,尝试使用string_data['key1']获取错误类型错误:字符串索引必须是整数。尝试字符串\u数据。get'key1'具有错误属性error:'str'对象没有属性'get'。尝试json.loadsstring\u数据会获取错误json.decoder.JSONDecodeError:期望值:第1行第1列字符0。我已经找到了一个使用regex'和其他方法解决问题的解决方案,但我想,使用request.form.get'key1'不会崩溃,但它不会打印任何内容。Ofc string_数据是一个字符串,因此getitem dict类访问都不起作用,但是如果内容确实是有效的json字符串,那么使用json.loads解析它应该不会有问题。一定是出了问题。您能给我一个完整的printstring_数据吗?