我正在尝试将以下JSON文本传递给我的python代码。
{"platform": "android", "version": "6.0.1"}
我的代码如下。
import sys
import json
data = json.loads(sys.argv[1])
print(str(data))
在Windows 10 PowerShell上运行以下内容时,
python jsonTest.py '{"platform": "android", "version": "6.0.1"}'
我得到以下内容:
Traceback (most recent call last):
File "jsonTest.py", line 3, in <module>
data = json.loads(sys.argv[1])
File "C:\Users\Rishabh Bhatnagar\AppData\Local\Programs\Python\Python36-
32\lib\json\__init__.py", line 354, in loads
return _default_decoder.decode(s)
File "C:\Users\Rishabh Bhatnagar\AppData\Local\Programs\Python\Python36-
32\lib\json\decoder.py", line 339, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "C:\Users\Rishabh Bhatnagar\AppData\Local\Programs\Python\Python36-
32\lib\json\decoder.py", line 355, in raw_decode
obj, end = self.scan_once(s, idx)
json.decoder.JSONDecodeError: Expecting property name enclosed in double
quotes: line 1 column 2 (char 1)
据我所知,我接受了我的代码,并正确传递了JSON文本。我无法弄清楚我做错了什么。我知道JSON文本是有效的(使用https://jsonlint.com/检查)。感谢。
答案 0 :(得分:2)
所以我明白了。
sys.argv[1]
以上一行是在我的Json文本下面,并从中取出引号。
{"platform": "android", "version": "6.0.1"}
到
{platform: android, version: 6.0.1}
我的解决方法是按如下方式运行它。
Python jsonTest.py '{\"platform\": \"android\", \"version\": \"6.0.1\"}'
我会尽力找到更好的方法,但就今天而言,我已经完成了。
答案 1 :(得分:0)
import sys
import json
data = json.loads(sys.argv[1].replace("'", '"'))
print(str(data))
这似乎对我有用,python 3.6在使用python jsonTest.py "{'platform': 'android', 'version': '6.0.1'}"