合并代码。临时上传
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
import json
|
||||
import os
|
||||
from pathlib import Path
|
||||
from typing import Dict, Any
|
||||
|
||||
import portalocker as locker # ① 引入跨平台锁
|
||||
|
||||
|
||||
@@ -118,11 +120,33 @@ class JsonUtils:
|
||||
json.dump(data, f, ensure_ascii=False, indent=4)
|
||||
|
||||
# --- 新增:通用追加(不做字段校验) ---
|
||||
# @classmethod
|
||||
# def append_json_items(cls, items, filename="log/last_message.json"):
|
||||
# """
|
||||
# 将 dict 或 [dict, ...] 追加到 JSON 文件(数组)中;不校验字段。
|
||||
# """
|
||||
# file_path = Path(filename)
|
||||
# data = cls._read_json_list(file_path)
|
||||
#
|
||||
# # 统一成 list
|
||||
# if isinstance(items, dict):
|
||||
# items = [items]
|
||||
# elif not isinstance(items, list):
|
||||
# # 既不是 dict 也不是 list,直接忽略
|
||||
# return
|
||||
#
|
||||
# # 只接受字典项
|
||||
# items = [it for it in items if isinstance(it, dict)]
|
||||
# if not items:
|
||||
# return
|
||||
#
|
||||
# data.extend(items)
|
||||
#
|
||||
# # LogManager.method_info(filename,"路径")
|
||||
# cls._write_json_list(file_path, data)
|
||||
|
||||
@classmethod
|
||||
def append_json_items(cls, items, filename="log/last_message.json"):
|
||||
"""
|
||||
将 dict 或 [dict, ...] 追加到 JSON 文件(数组)中;不校验字段。
|
||||
"""
|
||||
file_path = Path(filename)
|
||||
data = cls._read_json_list(file_path)
|
||||
|
||||
@@ -130,20 +154,19 @@ class JsonUtils:
|
||||
if isinstance(items, dict):
|
||||
items = [items]
|
||||
elif not isinstance(items, list):
|
||||
# 既不是 dict 也不是 list,直接忽略
|
||||
return
|
||||
|
||||
# 只接受字典项
|
||||
items = [it for it in items if isinstance(it, dict)]
|
||||
# 只保留 sender 非空的字典
|
||||
items = [
|
||||
it for it in items
|
||||
if isinstance(it, dict) and it.get("sender") != ""
|
||||
]
|
||||
if not items:
|
||||
return
|
||||
|
||||
data.extend(items)
|
||||
|
||||
# LogManager.method_info(filename,"路径")
|
||||
cls._write_json_list(file_path, data)
|
||||
|
||||
|
||||
@classmethod
|
||||
def update_json_items(cls, match: dict, patch: dict, filename="log/last_message.json", multi: bool = True) -> int:
|
||||
"""
|
||||
@@ -177,17 +200,8 @@ class JsonUtils:
|
||||
|
||||
return updated
|
||||
|
||||
# @classmethod
|
||||
# def query_all_json_items(cls, filename="log/last_message.json") -> list:
|
||||
# """
|
||||
# 查询 JSON 文件(数组)中的所有项
|
||||
# :param filename: JSON 文件路径
|
||||
# :return: list,可能为空
|
||||
# """
|
||||
# file_path = Path(filename)
|
||||
# print(file_path)
|
||||
# data = cls._read_json_list(file_path)
|
||||
# return data if isinstance(data, list) else []
|
||||
|
||||
|
||||
|
||||
@classmethod
|
||||
def query_all_json_items(cls, filename="log/last_message.json") -> list:
|
||||
|
||||
Reference in New Issue
Block a user