[package]
name = "string-or-bool"
version = "0.1.0"
edition = "2024"
[dependencies]
serde = { version = "1.0.219", features = ["derive"] }
serde_json = "1.0.140"
{
"name": "Foo",
"readme": "README.md"
}
{
"name": "Bar",
"readme": false
}
Person { name: "Foo", readme: String("README.md") }
Person { name: "Bar", readme: Bool(false) }
use serde::Deserialize;
#[derive(Deserialize, Debug)]
#[allow(dead_code)]
#[serde(untagged)]
enum Readme {
Bool(bool),
String(String),
}
#[derive(Deserialize, Debug)]
#[allow(dead_code)]
struct Person {
name: String,
readme: Readme,
}
fn main() {
let foo_file = "foo.json";
let content = std::fs::read_to_string(foo_file).unwrap();
let data = serde_json::from_str::<Person>(&content).unwrap();
println!("{:?}", data);
let bar_file = "bar.json";
let content = std::fs::read_to_string(bar_file).unwrap();
let data = serde_json::from_str::<Person>(&content).unwrap();
println!("{:?}", data);
}