gpt4 book ai didi

json - 紫回调不同的Json结构

转载 作者:行者123 更新时间:2023-12-03 11:45:34 26 4
gpt4 key购买 nike

我在WebsocketService中使用yew并将jsonrpcs发送到后端并接收相应的答案。我有一个问题来区分有效和错误的jsonrpc答案。
在模型实现中,我通过以下方式创建回调:

let callback = self.link.callback(|Json(data)| {
Msg::WsCallback(data)
});

WsCallback是一 strip 有实际响应的消息:
pub enum Msg {
// ...
WsCallback(Result<WsResponse, Error>),
}

响应是实际的JsonRpc格式:
#[derive(Deserialize)]
pub struct WsResponse {
jsonrpc: String,
result: String,
id: i32,
}

对于有效答案,效果很好,但是如何处理JsonRpc响应的错误情况,如下所示:
#[derive(Deserialize)]
pub struct JsonRpcError{
code: i32,
message: String,
}

#[derive(Deserialize)]
pub struct WsResponseErr {
jsonrpc: String,
error: JsonRpcError,
id: i32,
}

我可以对Json结构进行某种匹配吗?作为额外的问题:是否有可能解析结果类型不同于String的有效响应?

最佳答案

您应该同时使用两种类型的包装器,并为untagged添加serde属性:

#[derive(Deserialize)]
#[serde(untagged)]
pub enum JsonRpcResult {
Ok(WsResponse),
Err(WsResponseErr),
}

Is there a possibility to parse valid response with a result type different than String?


是的,我强烈建议您在此处使用自定义类型。您可以使用实现 Deserialize特质的任何类型,而不是 String。您可以阅读 here如何实现 Deserialize或仅将 derive用于您的结构,如上所述。

关于json - 紫回调不同的Json结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61836751/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com