1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- """
- 自定义的一些 json功能
- """
- import json
- import re
- def underscore_to_camelcase(snake_str):
- """ 将下划线命名转换为驼峰命名 """
- components = snake_str.split('_')
- return components[0] + ''.join(x.title() for x in components[1:])
- def camelcase_to_underscore(camel_str):
- """将驼峰命名转换为下划线命名"""
- return re.sub(r'(?<!^)(?=[A-Z])', '_', camel_str).lower()
- def convert_keys_to_camelcase(obj):
- """ 递归处理 JSON 对象 """
- if isinstance(obj, dict):
- new_obj = {}
- for k, v in obj.items():
- new_key = underscore_to_camelcase(k)
- new_obj[new_key] = convert_keys_to_camelcase(v)
- return new_obj
- elif isinstance(obj, list):
- return [convert_keys_to_camelcase(item) for item in obj]
- else:
- return obj
- def convert_keys_to_underscore(obj):
- if isinstance(obj, dict):
- new_obj = {}
- for k, v in obj.items():
- new_key = camelcase_to_underscore(k)
- new_obj[new_key] = convert_keys_to_underscore(v)
- return new_obj
- elif isinstance(obj, list):
- return [convert_keys_to_underscore(item) for item in obj]
- else:
- return obj
- def get_json_from_content(content:str, key:str):
- """
- 从不规则的长字符中解析出想要的 json文件
- :param content:
- :param key 想要获得的 key
- :return:
- """
- inside_items = False
- items_buffer = ""
- for line in content.splitlines():
-
- line = line.strip()
- if f'"${key}"' in line:
- items_buffer = '{'
- inside_items = True
- continue
-
- if inside_items:
- items_buffer += line
-
- if '"items": [' in items_buffer and ']' in items_buffer:
- try:
-
- data = json.loads(items_buffer)
-
- return data
- except json.JSONDecodeError:
- continue
- return None
- def find_key(data, target_key):
- if isinstance(data, dict):
-
- for key, value in data.items():
- if key == target_key:
- return value
- result = find_key(value, target_key)
- if result:
- return result
- elif isinstance(data, list):
-
- for item in data:
- result = find_key(item, target_key)
- if result:
- return result
- return None
|