MST

星途 面试题库

面试题:Python正则表达式与JSON数据动态校验

假设你需要接收动态的JSON数据,数据结构事先并不完全确定,但大致遵循一定的模式。例如,JSON对象可能包含特定前缀的键,且值的格式也有一定规则。使用Python的正则表达式和其他相关技术,实现一个动态校验函数,能够验证传入的JSON数据是否符合这个大致模式。阐述整体设计思路并给出完整代码实现。
46.8万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试

设计思路

  1. 首先解析传入的JSON数据,将其转换为Python的字典对象。
  2. 使用正则表达式匹配键的前缀模式。
  3. 针对值的格式,根据其可能的类型(如字符串、数字等)分别使用相应的正则表达式或其他验证方法进行验证。

代码实现

import re
import json


def validate_json_pattern(json_data):
    try:
        data = json.loads(json_data)
        for key, value in data.items():
            # 假设键的前缀模式为 'prefix_'
            if not re.match(r'^prefix_', key):
                return False
            # 假设值为字符串且长度在3到10之间
            if isinstance(value, str):
                if not re.match(r'^.{3,10}$', value):
                    return False
            # 假设值为整数且在0到100之间
            elif isinstance(value, int):
                if value < 0 or value > 100:
                    return False
            else:
                return False
        return True
    except json.JSONDecodeError:
        return False


你可以使用以下方式调用这个函数:

test_json = '{"prefix_key1": "value1", "prefix_key2": 50}'
print(validate_json_pattern(test_json))