{' created_at&#39 ;: datetime.datetime(2018,5,25,13,35,11),' tweet': " RT @KKRiders:Mavi将#Qualifier2的第一球打成碗。萨哈 罢工。我们走吧!\ n \ n#SRHvKKR #TeesraVaar #KKRHaiTaiyaar",' id': 1000007371131764736,' sequence':1}
这是我的字符串,我需要在json中。
def myconverter(o):
if isinstance(o, datetime.datetime):
return o.__str__()
messageRead = json.dumps(message.value, default = myconverter)
messageRead = json.loads(messageRead)
print messageRead
print type(messageRead)
答案 0 :(得分:2)
你的json无效。要解决此问题,请先修改字符串:
datetime.datetime(2018, 5, 25, 13, 35, 11)
不是有效字符串。您可以将其作为字符串传递,并在加载后解析它。\n
'
替换为"
(Python支持'
,但JSON不支持)\'
您的字符串可能如下所示:
{“created_at”:“datetime.datetime(2018,5,25,13,35,11)”, “鸣叫”:“RT @KKRiders:Mavi将#Qualifier2的第一球打成两球。 萨哈罢工。我们走了!#SRHvKKR #TeesraVaar #KKRHaiTaiyaar“,”id“: 1000007371131764736,“序列”:1}
要检查您的json是否有效,请使用:https://jsonlint.com/
请参阅此处的JSON RFC以了解JSON支持的内容:https://tools.ietf.org/html/rfc7159
答案 1 :(得分:1)
这就是json.loads在python2.7中的工作方式。 最简单的方法是切换到python3。如果你想坚持使用python2.7,你可以使用object_pairs_hook。
import datetime
import json
message = {
'created_at': datetime.datetime(2018, 5, 25, 13, 35, 11),
'tweet': "RT @KKRiders: Mavi to bowl the first ball of #Qualifier2. Saha on strike. Let's go!\n\n#SRHvKKR #TeesraVaar #KKRHaiTaiyaar",
'id': 1000007371131764736,
'sequence': 1}
def myconverter(o):
if isinstance(o, datetime.datetime):
return o.__str__()
def object_pairs_hook(pairs):
new_pairs = []
for key, value in pairs:
if isinstance(value, unicode):
try:
value = datetime.datetime.strptime(value, "%Y-%m-%d %H:%M:%S")
except:
value = value.encode('utf-8')
if isinstance(key, unicode):
key = key.encode('utf-8')
new_pairs.append((key, value))
return dict(new_pairs)
messageRead = json.dumps(message, default = myconverter)
messageRead = json.loads(messageRead, object_pairs_hook=object_pairs_hook)
print messageRead
请注意,如果您希望将列表和词典用作值,则必须修改object_pairs_hook