jsonrpc-core 3.0.1

Transport agnostic rust implementation of JSON-RPC 2.0 Specification.
Documentation
//! Serialization / Deserialization utilities.
use serde::{Deserialize, Serialize};
use serde_json::value::{Value, from_value, self};
use super::{Params, Error};

/// Parse incoming `Params` into expected types.
pub fn from_params<D>(params: Params) -> Result<D, Error> where D: Deserialize {
	let value = match params {
		Params::Array(vec) => Value::Array(vec),
		Params::Map(map) => Value::Object(map),
		Params::None =>  Value::Null
	};

	from_value(value).map_err(|_| Error::invalid_params())
}

/// Converts serializable output into `Value`
#[inline]
pub fn to_value<S>(s: S) -> Value where S: Serialize {
	value::to_value(&s)
}