Make Response::into_json deserialize into a serde DeserializeOwned

This removes the necessity to take the result of Response::into_json and
having to convert it into a struct by using serde_json::from_value

This adds no new dependencies since serde_json already depends on serde.
Users of ureq will have to include `serde_derive` either by importing it
directly or by using serde with the `derive` feature, unless they want to
manually implement `Deserialize` on their structs.
This commit is contained in:
Paolo Barbolini
2020-05-02 17:32:33 +02:00
committed by Martin Algesten
parent 8f2d094cef
commit 0b69c595b6
5 changed files with 44 additions and 17 deletions

View File

@@ -17,6 +17,14 @@ fn tls_connection_close() {
#[cfg(feature = "json")]
#[test]
fn agent_set_cookie() {
use serde::Deserialize;
use std::collections::HashMap;
#[derive(Deserialize)]
struct HttpBin {
headers: HashMap<String, String>,
}
let agent = ureq::Agent::default().build();
let cookie = ureq::Cookie::build("name", "value")
.domain("httpbin.org")
@@ -30,10 +38,9 @@ fn agent_set_cookie() {
assert_eq!(resp.status(), 200);
assert_eq!(
"name=value",
resp.into_json()
.unwrap()
.get("headers")
resp.into_json::<HttpBin>()
.unwrap()
.headers
.get("Cookie")
.unwrap()
);