You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

76 lines
2.0 KiB

package main
import (
"encoding/json"
"fmt"
"os"
)
// 读取账号配置
// Python: eval(f.read()) -> Go: JSON解析
func LoadAccountConfig(filename string) (*AccountConfig, error) {
// 检查文件是否存在
if _, err := os.Stat(filename); os.IsNotExist(err) {
// 文件不存在,创建模板文件
defaultConfig := AccountConfig{
Username: "your_username",
Password: "your_password",
}
file, _ := json.MarshalIndent(defaultConfig, "", " ")
os.WriteFile(filename, file, 0644)
return nil, fmt.Errorf("账号文件不存在,已创建模板 %s,请填写后重试", filename)
}
// 读取文件
data, err := os.ReadFile(filename)
if err != nil {
return nil, fmt.Errorf("读取账号文件失败: %v", err)
}
// 解析JSON
var config AccountConfig
err = json.Unmarshal(data, &config)
if err != nil {
return nil, fmt.Errorf("解析账号文件失败,请确保是JSON格式: %v", err)
}
return &config, nil
}
// 读取Alpha表达式列表
// Python: json.load(f) -> Go: 也是json解析,但要定义结构
func LoadAlphaList(filename string) ([]map[string]interface{}, error) {
// 检查文件是否存在
if _, err := os.Stat(filename); os.IsNotExist(err) {
// 创建示例文件
example := []map[string]interface{}{
{
"regular": "示例表达式",
"settings": map[string]interface{}{},
"type": "REGULAR",
},
}
file, _ := json.MarshalIndent(example, "", " ")
os.WriteFile(filename, file, 0644)
return nil, fmt.Errorf("Alpha文件不存在,已创建示例 %s,请添加表达式后重试", filename)
}
data, err := os.ReadFile(filename)
if err != nil {
return nil, fmt.Errorf("读取Alpha文件失败: %v", err)
}
// 解析为通用格式
// Go中,如果JSON结构不确定,可以用[]map[string]interface{}
var alphaList []map[string]interface{}
err = json.Unmarshal(data, &alphaList)
if err != nil {
return nil, fmt.Errorf("解析Alpha文件失败: %v", err)
}
return alphaList, nil
}