解析参数在Python JSON字符串

问题描述:

我想做的事情在我的python脚本如下:解析参数在Python JSON字符串

d = {"dpid": + sys.argv [1] + ,"flow_id" : "flow0001"," "actions":{"output":2}} 

它是一个JSON字符串进一步我加载在我的应用程序,可以在任何的帮助,我应该如何解析在这样的说法字符串?

+3

你的JSON的结构是不正确的。请修复它,期望的输出是什么? – thefourtheye 2015-03-13 09:46:19

+0

*我该如何解析字符串中的参数?*您的意思是'sys.argv [1]'? – 2015-03-13 10:01:36

您的代码不正确。将其替换为:

d = "{\"dpid\":" + sys.argv[1] + ",\"flow_id\":\"flow0001\",\"actions\":{\"output\":2}}" 

确保输入的参数是整数。如果你想稍后解析JSON字符串,并获得DPID,写这篇(Python 3的代码):

import json 
j = json.loads(d) 
print(j['dpid']) 
+1

为什么不使用'json.dumps(d)'而不是手动构建JSON? – 2015-03-13 10:13:44

+0

@TimCastelijns我从来不知道!谢谢。 – 2015-03-13 10:17:59

如果你的文件名是test.py 然后 通ARGS像下面

$ python test.py arg1 arg2 arg3 

在test.py文件,您可以通过STR(sys.argv中[指数])

在你的情况下访问他们作为字符串

d = '{"dpid":"' + str(sys.argv [1]) +'" ,"flow_id":"flow0001", "actions":{"output":2}}' 

然后解析该字符串如下,

import json 
obj = json.loads(d) 
+0

'json.loads()'不会工作,除非你首先转储它 – 2015-03-13 10:22:06

+0

如果我们有正确的字符串表示格式,那么不需要转储。在上面的场景中,'d'包含json对象的字符串表示形式,当我们使用加载函数时它会给对象。只是检查出来@TimCastelijns – 2015-03-13 10:48:41

+0

哦对。我错过了报价 – 2015-03-13 10:51:31