I'm using serde_json to serialize an enum to JSON.
This is what I'm getting when serializing std::net::IpAddr:
use std::net::IpAddr;
fn main() {
let addr : IpAddr = "127.0.0.1".parse().unwrap();
let json = serde_json::to_string(&addr).unwrap();
println!("{}", json);
}
output:
"127.0.0.1"
However, when I write my own similar enum and serialize it, it looks different:
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize)]
enum Foo {
One(String),
Two(String),
}
fn main() {
let foo = Foo::One("one".to_string());
let json = serde_json::to_string(&foo).unwrap();
println!("{}", json);
}
output:
{"One":"one"}
Why does the first snippet write a JSON string while the second one writes a JSON object?