【发布时间】:2020-11-03 19:27:19
【问题描述】:
和我的一个朋友,我们正在尝试使用serde_json crate 来反序列化 WebSocket 发送的一些消息。
我们遇到了一个特定错误,我们设法使用以下 sn-p 代码重新创建它:
use serde::{Deserialize, Serialize};
#[derive(Deserialize, Debug)]
struct EffetSer {
test: String
}
fn main() {
let test_value = JsValue::from_str("{\"test\": \"value\"}");
let test_value: EffetSer = test_value.into_serde().unwrap();
log::error!("WOW : {:?}", test_value);
}
我们的 TOML 有以下依赖:
wasm-bindgen = { version = '0.2.63', features = ['serde-serialize'] }
serde = { version = '1.0', features = ["derive"] }
serde_json = '1.0.55'
js-sys = '0.3.40'
错误如下:
app.js:310 panicked at 'called `Result::unwrap()` on an `Err` value: Error("invalid type: string \"{\\\"test\\\": \\\"value\\\"}\", expected struct EffetSer", line: 1, column: 23)'
非常感谢任何帮助,因为我们仍在努力了解我们做错了什么以及为什么我们无法反序列化我们的 String。
【问题讨论】:
-
什么是
Component?我在您的依赖项中找不到它。如果您提供一个最小的可重现示例,将会有所帮助。 -
你说的很对,很抱歉我应该放一个主要的。我正在编辑我的原始帖子。
-
我相信问题出在
JsValue。因为使用 serde 只能正常工作:let eff: EffetSer = serde_json::from_str("{\"test\": \"value\"}").unwrap();
标签: rust webassembly serde serde-json