如何在Rust中序列化PowerShell脚本输出为JSON格式
实现PowerShell输出的JSON序列化(Rust + Tauri)
要让你的PowerShell脚本输出转为JSON格式并在Rust/Tauri中正确处理,分两步操作:
1. 修改PowerShell脚本输出JSON
默认Get-WinUserLanguageList返回的是PowerShell对象格式,需要直接输出JSON字符串。修改你的Script.ps1:
Get-WinUserLanguageList | ConvertTo-Json
ConvertTo-Json会把命令结果序列化为标准JSON格式,让Rust端可以直接解析。
2. 调整Rust代码解析并返回JSON
首先在Cargo.toml中添加必要依赖:
[dependencies] tauri = { version = "1.5", features = ["command"] } powershell_script = "0.1" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0"
然后修改get_keyboard_list命令,解析PowerShell返回的JSON字符串并返回可序列化的结果:
use serde_json::Value; use tauri::command; #[command] fn get_keyboard_list() -> Result<Value, String> { let script = include_str!("script.ps1"); match powershell_script::run(script) { Ok(output) => { // 解析PowerShell输出的JSON字符串 match serde_json::from_str(&output) { Ok(json_value) => Ok(json_value), Err(e) => Err(format!("解析JSON失败: {}", e)), } } Err(e) => Err(format!("执行PowerShell脚本失败: {}", e)), } }
关键说明
- PowerShell端用
ConvertTo-Json确保输出是标准JSON,避免Rust解析时出错 - Rust端通过
serde_json::from_str把字符串解析为serde_json::Value,这是Tauri命令支持的可序列化类型,前端调用该命令时会自动拿到结构化的JSON数据 - 返回
Result类型可以统一处理脚本执行和JSON解析的错误,方便前端捕获异常
内容的提问来源于stack exchange,提问作者sluppysluppy
相关产品推荐
相关产品推荐

