use oxml_json::{Json, parse};
fn main() {
let request = r#"{"jsonrpc":"2.0","id":7,"method":"initialize","params":{"trace":"off"}}"#;
let value = parse(request).expect("the request is valid JSON");
assert_eq!(
value.get("method").and_then(Json::as_str),
Some("initialize")
);
assert_eq!(
value
.get("params")
.and_then(|p| p.get("trace"))
.and_then(Json::as_str),
Some("off")
);
let reply = Json::object(vec![
("jsonrpc", Json::str("2.0")),
("id", value.get("id").cloned().unwrap_or(Json::Null)),
(
"result",
Json::object(vec![("capabilities", Json::object(vec![]))]),
),
]);
println!("{}", reply.to_json());
let bad = parse("{\"unterminated\": ");
println!("malformed input: {}", bad.unwrap_err());
}