如何用日期时间对象替换 json 中的字符串值

how to replace the string value in json with a datetime object

如何将值 'today_date' 和“yesterday_date”替换为:

today_date = datetime.datetime.today().replace(hour=0, minute=0, second=0, microsecond=0)

yesterday_date = today_date - datetime.timedelta(1)

在这样的 json 中:

[{'$match': {'event_code': 'SALE', 'properties.event_data.status': 'SUCCESS', 'properties.event_data.service': {'$in': ['a', 'b', 'c', 'd']}, 'properties.event_data.transaction_date': {'$lt': 'today_date', '$gte': 'yesterday_date'}}}, {'$group': {'_id': '$properties.event_data.service', 'count': {'$sum': 1}, 'sale': {'$sum': '$properties.event_data.mrp'}}}, {'$project': {'_id': 0, 'service': '$_id', 'count': '$count', 'sale': '$sale'}}]

需要的输出是这样的:

    [{'$match': {'event_code': 'SALE',
   'properties.event_data.status': 'SUCCESS',
   'properties.event_data.service': {'$in': ['Mobile',
     'DTH',
     'Pancard',
     'RBLMR']},
   'properties.event_data.transaction_date': {'$lt': datetime.datetime(2018, 6, 14, 0, 0),
    '$gte': datetime.datetime(2018, 6, 13, 0, 0)}}},
 {'$group': {'_id': '$properties.event_data.service',
   'count': {'$sum': 1},
   'sale': {'$sum': '$properties.event_data.mrp'}}},
 {'$project': {'_id': 0,
   'service': '$_id',
   'count': '$count',
   'sale': '$sale'}}]

考虑到 JSON 格式,您需要为您的日期创建一个对象:

{'$lt': { 'year' : 2018, 'month' : 6, 'day' : 14, 'hour' : 0, 'minute' : 0 } }

接听伙伴接电话

datetime.datetime

使用 JSON 日期对象中的值。

我现在可以解决了

def value_replace(b):
    dict_list=[]
    for i in b:
        # print(type(i),i)
        for key,value in i.items():
            if type(value) is dict:
               # print(type(value))
                dict_list.append(value)
            else:
                if value=='today_date':
                    # print(key,value)
                    i[key]=datetime.datetime.today().replace(hour=0, minute=0, second=0, microsecond=0)
                elif value=='yesterday_date':
                    # print(value)
                    i[key]=datetime.datetime.today().replace(hour=0, minute=0, second=0, microsecond=0)-datetime.timedelta(1)
    if len(dict_list)!=0:
        value_replace(dict_list)