-
Notifications
You must be signed in to change notification settings - Fork 12
Open
Description
When serializing a variable that is type u32, it will be typed as string instead of number. u16 and below correctly cast into number.
Using the following crate dependencies:
serde = { version = "^1.0", features = ["derive"] }
serde_json = "1.0.133"
xml-rpc = "0.0.12"
Test to replicate:
Rust:
extern crate xml_rpc;
use serde::{Deserialize, Serialize};
use std::net::{IpAddr, Ipv4Addr, SocketAddr};
use xml_rpc::{Fault, Server};
#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct Point {
should_be_number: u32,
is_a_number: u16,
}
fn get_value(_i: i8) -> Result<Point, Fault> {
let point = Point {
should_be_number: 5,
is_a_number: 5,
};
Ok(point)
}
fn main() {
let socket = SocketAddr::new(IpAddr::V4(Ipv4Addr::LOCALHOST), 8080);
let mut server = Server::new();
server.register_simple("get_value", &get_value);
let bound_server = server.bind(&socket).unwrap();
bound_server.run();
}Python:
import xmlrpc.client
proxy = xmlrpc.client.ServerProxy("http://localhost:8080")
point = proxy.get_value(1)
print(point)Expected:
{'is_a_number': 5, 'should_be_number': 5}
Result:
{'is_a_number': 5, 'should_be_number': '5'}
Metadata
Metadata
Assignees
Labels
No labels