rust - 如何使用 serde 从 XML 属性中反序列化一个数字?
问题描述
u32
我想从 XML 属性中反序列化一个数字(例如)。
#[macro_use]
extern crate serde_derive;
extern crate serde;
extern crate serde_xml_rs as serde_xml;
#[derive(Deserialize, Debug)]
#[serde(rename = "objects")]
pub struct Objects {
pub foo: u32
}
fn main() {
let result_string = r#"<?xml version="1.0" encoding="UTF-8"?>
<objects foo="42"></objects>"#;
let deserialized: Objects= serde_xml::deserialize(result_string.as_bytes()).expect("Parse error!");
}
但执行后,我收到以下错误
thread 'main' panicked at 'Parse error!: invalid type: string "42", expected u32'
我知道#[serde(deserialize_with="...")]
注释,但有没有更简单的方法(例如使用serde_xml_rs
crate)?
解决方案
不要使用0.2.1
. 添加到 Cargo.toml:
serde-xml-rs = { git= "https://github.com/RReverser/serde-xml-rs.git"}
使用 master 的 serde-xml-rs 可以解决这个问题。
推荐阅读
- sql - 我们可以减少对同一个表的多个连接吗
- angular - owl-carousel 滑块不起作用。当我以角度 8 加载组件时
- node.js - NestJs 在使用 Jest 运行测试时无法编译测试模块
- sparql - 如何使用实体名称使用 SPARQL 查询 Wikidata 并检查替代标签?
- php - Wordpress:nav_menu_link_attributes 不接受变量作为属性
- python - 获取绝对文件路径列表并忽略点目录/文件python
- flutter - GestureDetector onHorizontalDragUpdate 重复调用问题
- eclipse - 在 Eclipse 中设置服务器时无法添加项目
- postgresql - 如何在 Postgress 中获得给定月份的一周范围
- javascript - 如何将变量声明为函数并为其赋值