2013-11-25 57 views
0

我得到的输出为带有以下代码的json字符串。但我需要它作为JSON字典没有领先和尾随报价。我怎样才能做到这一点?无法获得输出为json字典

它似乎工作,如果我取消注释line4但未与原始输入。

def main(args): 
    f = open(args[1], 'w') 
    inp = raw_input("Enter a Dict") 
    # inp = {"a":1,"b":2} 
    django.utils.simplejson.dumps(inp, f) 

if __name__=="__main__": 
    import sys 
    main(sys.argv) 

样本输出I收到:

"{'a':1,'b':2}" 

输出欲:

{'a':1,'b':2} 
+1

您发布的代码根本不打印任何内容。你能发布我们的实际工作代码和它的输出吗? –

+0

你显然想要的输出是无效的JSON。 JSON必须有双引号,而不是单引号。 –

回答

1

raw_input()返回一个字符串,它是从inp一个完全不同的对象,它是一个Python字典。

如果你想raw_input被视为JSON,首先分析它是这样:

inp = raw_input("Enter a Dict") 
inp = django.utils.simplejson.loads(inp) 
django.utils.simplejson.dump(inp, f) 

或解析它作为一个Python文字表达:

from ast import literal_eval 

inp = raw_input("Enter a Dict") 
inp = literal_eval(inp) 
django.utils.simplejson.dump(inp, f) 
0

你用户的输入转换成一个字符串。这不是一本字典;它是一个以{开头并以}结尾的字符串。

您需要在将它转换为json之前先解析/评估它为字典。

>>> inp = "{'a': 1, 'b': 2}" 
>>> json.dumps(inp) 
'"{\'a\': 1, \'b\': 2}"' 
>>> import ast 
>>> d = ast.literal_eval(inp) 
>>> json.dumps(d) 
'{"a": 1, "b": 2}' 
0

输入= “{ 'A':1, 'B':2}”

import ast 
ast.literal_eval(Input) 

OR

eval(Input) 

它会为你工作... :)

输出 - :{'a':1,'b':2}