瀏覽代碼

as 自身解析配置文件

hl 1 年之前
父節點
當前提交
129580aa87
共有 1 個文件被更改,包括 37 次插入11 次删除
  1. 37 11
      global/src/params.rs

+ 37 - 11
global/src/params.rs

@@ -3,6 +3,8 @@ use std::io::Read;
 use rust_decimal::Decimal;
 use toml::from_str;
 use serde_derive::Deserialize;
+use serde_json::Value;
+use tracing::info;
 
 
 #[derive(Debug, Deserialize, Clone)]
@@ -48,7 +50,7 @@ pub struct Params {
     // 日志级别,从低到高依次是:[trace, debug, info, warn, error]
     pub log_level: String,
     // 中控端口
-    pub port: u32
+    pub port: u32,
 }
 
 impl Params {
@@ -65,18 +67,42 @@ impl Params {
     }
     pub fn new_json(file_path: &str) -> Result<Params, Box<dyn std::error::Error>> {
         // 打开文件并读取内容
-        // let mut file = File::open(file_path)?;
-        // let mut contents = String::new();
-        // file.read_to_string(&mut contents)?;
-
         let json_contents = std::fs::read_to_string(file_path)?;
-        // 使用serde_json库来解析JSON文件内容,并将其转换为Ship结构体
-        let params: Params = serde_json::from_str(&json_contents)?;
-
-
-        // 解析 TOML 数据到 Params 结构体
-        // let params: Params = from_str(&contents)?;
 
+        let json_value: serde_json::Value = serde_json::from_str(&json_contents).unwrap();
+        let acc = json_value["account"].clone();
+        let mut ref_exchange: Vec<String> = vec![];
+        for r in json_value["ref_exchange"].as_array().unwrap() {
+            ref_exchange.push(r.as_str().unwrap().to_string())
+        }
+        let mut ref_pair: Vec<String> = vec![];
+        ref_pair.push(json_value["ref_pair"].as_str().unwrap().to_string());
+        // 使用serde_json库来解析JSON文件内容,并将其转换为Ship结构体
+        // let params: Params = serde_json::from_str(&json_contents)?;
+        let params: Params = Params {
+            broker_id: json_value["broker_id"].as_str().unwrap().to_string(),
+            account_name: acc["name"].as_str().unwrap().to_string(),
+            access_key: acc["accessKey"].as_str().unwrap().to_string(),
+            secret_key: acc["secretKey"].as_str().unwrap().to_string(),
+            pass_key: acc["pass"].as_str().unwrap().to_string(),
+            exchange: json_value["exchange"].as_str().unwrap().to_string(),
+            pair: json_value["pair"].as_str().unwrap().to_string(),
+            open: Decimal::try_from(json_value["open"].as_f64().unwrap_or_default()).unwrap(),
+            close: Decimal::try_from(json_value["close"].as_f64().unwrap_or_default()).unwrap(),
+            lever_rate: Decimal::try_from(json_value["lever_rate"].as_f64().unwrap_or_default()).unwrap(),
+            hold_coin: Decimal::try_from(json_value["lever_rate"].as_f64().unwrap_or_default()).unwrap(),
+            interval: json_value["lever_rate"].as_u64().unwrap_or_default(),
+            ref_exchange: ref_exchange,
+            ref_pair: ref_pair,
+            used_pct: Decimal::try_from(json_value["used_pct"].as_f64().unwrap_or_default()).unwrap(),
+            stop_loss: Decimal::try_from(json_value["stop_loss"].as_f64().unwrap_or_default()).unwrap(),
+            gamma: Decimal::try_from(json_value["gamma"].as_f64().unwrap_or_default()).unwrap(),
+            grid: json_value["gamma"].as_i64().unwrap_or_default() as i8,
+            colo: json_value["colo"].as_i64().unwrap_or_default() as i8,
+            log_level: json_value["log_level"].as_str().unwrap().to_string(),
+            port: json_value["colo"].as_u64().unwrap_or_default() as u32,
+        };
+        // println!("?????????:{:?}。", params);
         Ok(params)
     }
 }