Fix custom deserializer for NonCodeMeta
This commit is contained in:
@ -811,18 +811,16 @@ impl<'de> Deserialize<'de> for NonCodeMeta {
|
|||||||
#[derive(Deserialize)]
|
#[derive(Deserialize)]
|
||||||
#[serde(rename_all = "camelCase")]
|
#[serde(rename_all = "camelCase")]
|
||||||
struct NonCodeMetaHelper {
|
struct NonCodeMetaHelper {
|
||||||
non_code_nodes: HashMap<String, NonCodeNode>,
|
non_code_nodes: HashMap<String, Vec<NonCodeNode>>,
|
||||||
start: Option<NonCodeNode>,
|
start: Option<NonCodeNode>,
|
||||||
}
|
}
|
||||||
|
|
||||||
let helper = NonCodeMetaHelper::deserialize(deserializer)?;
|
let helper = NonCodeMetaHelper::deserialize(deserializer)?;
|
||||||
let mut non_code_nodes = HashMap::new();
|
let non_code_nodes = helper
|
||||||
for (key, value) in helper.non_code_nodes {
|
.non_code_nodes
|
||||||
non_code_nodes
|
.into_iter()
|
||||||
.entry(key.parse().map_err(serde::de::Error::custom)?)
|
.map(|(key, value)| Ok((key.parse().map_err(serde::de::Error::custom)?, value)))
|
||||||
.or_insert(Vec::new())
|
.collect::<Result<HashMap<_, _>, _>>()?;
|
||||||
.push(value);
|
|
||||||
}
|
|
||||||
Ok(NonCodeMeta {
|
Ok(NonCodeMeta {
|
||||||
non_code_nodes,
|
non_code_nodes,
|
||||||
start: helper.start,
|
start: helper.start,
|
||||||
|
|||||||
Reference in New Issue
Block a user