问题是不言自明的:
import simplejson as json
a = u"[(datetime.datetime(2012, 3, 13, 14, 50, 13, 996833), 'ACTIVE', [u'my.test.service', '{}'])]"
json.loads(a)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/dist-packages/simplejson/__init__.py", line 384, in loads
return _default_decoder.decode(s)
File "/usr/lib/python2.7/dist-packages/simplejson/decoder.py", line 402, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib/python2.7/dist-packages/simplejson/decoder.py", line 418, in raw_decode
obj, end = self.scan_once(s, idx)
simplejson.decoder.JSONDecodeError: Expecting object: line 1 column 1 (char 1)
问题很明显:如何将我的字符串转换为列表?
答案 0 :(得分:2)
你做不到。 (datetime.datetime(2012,3,13,14,50,13,996833)在JSON中没有任何意义。 相反,如果你试图做相反的事情,你会发现问题:
json.dumps([(datetime.datetime(2012, 3, 13, 14, 50, 13, 996833), 'ACTIVE' [u'my.test.service', '{}'])])
TypeError: datetime.datetime(2012, 3, 13, 14, 50, 13, 996833) is not JSON serializable
修改强>:
实际上,再次阅读你的问题让我注意到你没有指定你想要使用JSON,只是“将字符串转换为列表”。不确定你的用例是什么,但这适用于你的情况:
In [23]: a = "[(datetime.datetime(2012, 3, 13, 14, 50, 13, 996833), 'ACTIVE', [u'my.test.service', '{}'])]"
In [24]: eval(a)
Out[24]: [(datetime.datetime(2012, 3, 13, 14, 50, 13, 996833), 'ACTIVE', [u'my.test.service', '{}'])]
答案 1 :(得分:0)
您不能在代码中使用函数。您需要从JSON流中断出datetime(),或将其置于正确的格式中。尝试首先解析已知的JSON代码。
答案 2 :(得分:-1)
分配a时的第一个字符是'u'但没有引号。尝试删除它,看看它是怎么回事,像这样:
import simplejson as json
a = "[(datetime.datetime(2012, 3, 13, 14, 50, 13, 996833), 'ACTIVE', [u'my.test.service', '{}'])]"
json.loads(a)