import json
def truncate_strings(json_obj):
if isinstance(json_obj, dict):
# check if object has more than one key that is alphanumeric and 20 characters long
long_keys = [k for k in json_obj.keys() if isinstance(k, str) and k.isalnum() and len(k) == 20]
if len(long_keys) > 1:
# drop all keys except the first one
first_key = long_keys[0]
return {first_key: truncate_strings(json_obj[first_key])}
else:
# truncate all keys and values recursively
return {k[:30]: truncate_strings(v) for k, v in json_obj.items()}
elif isinstance(json_obj, list):
if len(json_obj) > 5:
truncated_list = [truncate_strings(elem) for elem in json_obj[:5]]
else:
truncated_list = [truncate_strings(elem) for elem in json_obj]
return truncated_list
elif isinstance(json_obj, str) and len(json_obj) > 30:
return json_obj[:30]
else:
return json_obj
# Read in the original JSON file
with open('original.json', 'r') as f:
original_json = json.load(f)
# Truncate any strings longer than 30 characters, drop array elements beyond the first 5,
# and drop object keys beyond the first one if there are multiple long keys
truncated_json = truncate_strings(original_json)
# Write the truncated JSON to a new file
with open('truncated.json', 'w') as f:
json.dump(truncated_json, f)
1条答案
按热度按时间z31licg01#
正如评论中提到的,Firestore并没有真正遵循一个模式。
但我们仍然可以尝试理解数据的结构。
我是这么做的
第一步:导出数据。
在Firebase控制台上,进入-〉项目设置-〉服务帐户-〉生成新私钥-〉保存为exportedDB.json运行npx -p node-firestore-import-export firestore-export -a exportedDB.json -b original.json
第二步:删除不必要的信息,使文件更小。
下面是一个脚本,我用它将我的文件从7 MB缩减到10 KB,同时仍然保持结构不变。本质上,它只是删除兄弟文档并截断长字符串:
第三步:让你喜欢的LLM,比如Chat-GPT,帮你推断schema:
请从这个json推断数据库模式:[粘贴截断文件的内容]