将yaml转换为json:TypeError:类型为“ date”的对象不可JSON序列化

时间:2018-12-13 08:44:34

标签: python json yaml

我需要将Yaml文件转换为json。但是我得到了错误

TypeError:“日期”类型的对象不可JSON序列化

我检查了其他帖子,并尝试纳入建议,但似乎无济于事。这就是我的

import yaml
import json
import datetime

def DateEncoder(obj):
        if isinstance(obj, datetime.datetime):  
            return obj.strftime('%Y-%m-%d')  

with open('./660093.yaml') as f:
    print(json.dumps(yaml.load(f), default=DateEncoder))

TypeError: Object of type 'date' is not JSON serializable

当我检查yaml文件的内容时,我看到两行带有以下格式的日期

{'meta': {'data_version': 0.9, 'created': datetime.date(2013, 12, 20), 
'revision': 1}, 'info': {'city': 'Abu Dhabi', 'dates': [datetime.date(2013, 11, 15)], 
'gender': 'male', 'match_type': 'IT20', 'neutral_venue': 1, 'outcome': 
{'by': {'runs': 32}, 'winner': 'Ireland'}, 'overs': 20,
...
...

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:1)

您的DateEncoder仅处理datetime个对象,而不处理date个对象。那是你的问题。

像这样更改它:

def DateEncoder(obj):
  if isinstance(obj, (datetime.datetime, datetime.date)):
      return obj.strftime('%Y-%m-%d')