Skip to content
Snippets Groups Projects
Commit 0665cfa9 authored by Arkadiy Paronyan's avatar Arkadiy Paronyan Committed by Gav Wood
Browse files

Avoid serializing into `json::Value` (#313)

parent 58c84d49
Branches
No related merge requests found
......@@ -114,6 +114,14 @@ impl ChainSpec {
/// Dump to json string.
pub fn to_json(self, raw: bool) -> Result<String, String> {
#[derive(Serialize, Deserialize)]
struct Container {
#[serde(flatten)]
spec: ChainSpecFile,
#[serde(flatten)]
genesis: Genesis,
};
let genesis = match (raw, self.genesis.resolve()?) {
(true, Genesis::Runtime(g)) => {
let storage = g.build_storage()?.into_iter()
......@@ -124,11 +132,10 @@ impl ChainSpec {
},
(_, genesis) => genesis,
};
let mut spec = json::to_value(self.spec).map_err(|e| format!("Error generating spec json: {}", e))?;
{
let map = spec.as_object_mut().expect("spec is an object");
map.insert("genesis".to_owned(), json::to_value(genesis).map_err(|e| format!("Error generating genesis json: {}", e))?);
}
let spec = Container {
spec: self.spec,
genesis,
};
json::to_string_pretty(&spec).map_err(|e| format!("Error generating spec json: {}", e))
}
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment