将字符串转换为Python字典或JSON对象

将字符串转换为Python字典或JSON对象,python,json,dictionary,serialization,deserialization,Python,Json,Dictionary,Serialization,Deserialization,问题是——我有一个以下格式的字符串(注意:没有换行符)。我只是希望这个字符串在python字典或json对象中序列化,以便轻松导航。我尝试了ast.literal_eval和json,但最终结果要么是一个错误,要么只是另一个字符串。有时我会对这个问题感到困惑,我知道有一个简单而优雅的解决方案,而不仅仅是编写自己的解析器 { table_name: { "columns": [ { "col_1":{"col_1_1":"value_1_1

问题是——我有一个以下格式的字符串(注意:没有换行符)。我只是希望这个字符串在python字典或json对象中序列化,以便轻松导航。我尝试了ast.literal_eval和json,但最终结果要么是一个错误,要么只是另一个字符串。有时我会对这个问题感到困惑,我知道有一个简单而优雅的解决方案,而不仅仅是编写自己的解析器

{
  table_name:

   {
     "columns":

   [
     {

        "col_1":{"col_1_1":"value_1_1","col_1_2":"value_1_2"},
        "col_2":{"col_2_1":"value_2_1","col_2_2":"value_2_2"},
        "col_3":"value_3","col_4":"value_4","col_5":"value_5"}],

     "Rows":1,"Total":1,"Flag":1,"Instruction":none

    }
}
请注意,JSON解码器希望每个属性名称都用双引号括起来。
re.sub()
JSON.loads()函数使用以下方法:

import json, re

s = '{table_name:{"columns":[{"col_1":{"col_1_1":"value_1_1","col_1_2":"value_1_2"},"col_2":{"col_2_1":"value_2_1","col_2_2":"value_2_2"},"col_3":"value_3","col_4":"value_4","col_5":"value_5"}],"Rows":1,"Total":1,"Flag":1,"Instruction":none}}'
s = re.sub(r'\b(?<!\")([_\w]+)(?=\:)', r'"\1"', s).replace('none', '"None"')
obj = json.loads(s)

print(obj)
请注意,JSON解码器希望每个属性名称都用双引号括起来。
re.sub()
JSON.loads()函数使用以下方法:

import json, re

s = '{table_name:{"columns":[{"col_1":{"col_1_1":"value_1_1","col_1_2":"value_1_2"},"col_2":{"col_2_1":"value_2_1","col_2_2":"value_2_2"},"col_3":"value_3","col_4":"value_4","col_5":"value_5"}],"Rows":1,"Total":1,"Flag":1,"Instruction":none}}'
s = re.sub(r'\b(?<!\")([_\w]+)(?=\:)', r'"\1"', s).replace('none', '"None"')
obj = json.loads(s)

print(obj)

问题是
table\u name
应该被引用(如果你想使用JSON,请使用双引号),而
none
对于
ast.literal\u eval
null
对于
JSON
。问题是
table\u name
应该被引用(如果你想使用JSON,请使用双引号)而
none
对于
ast.literal\u eval
应该是
none
,对于
JSON
应该是
null