можно вот так:
def ch_payload(payload):
    result = {}
    for key, value in payload.items():
        if isinstance(value, list):
            if value:
                value = value[0]
        result[key] = value
        if isinstance(value, dict):
            result[key] = ch_payload(value)
    return result
def get_value(payload, item, fallback=None):
    """
    Получение вложенных данных
    d = {'a': {'b': {'c': 1}}}
    get_value(d, 'a.b.c')
    """
    serialize_dict = ch_payload(payload)
    def getitem(serialize_dict, name):
        try:
            return serialize_dict[name]
        except (KeyError, TypeError):
            return fallback
    return reduce(getitem, item.split('.'), serialize_dict)
и теперь для извлечения данных из json портянки можно делать следующее:
test = get_value(newMessage, "messages.items.peer_id")