You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 16:02:03