diff --git a/server-rs/crates/shared-contracts/src/game_creation_app/asset_kind.rs b/server-rs/crates/shared-contracts/src/game_creation_app/asset_kind.rs index 5638a299a..6d38774d2 100644 --- a/server-rs/crates/shared-contracts/src/game_creation_app/asset_kind.rs +++ b/server-rs/crates/shared-contracts/src/game_creation_app/asset_kind.rs @@ -192,6 +192,13 @@ impl<'de> Deserialize<'de> for GameCreationAppAssetKind { { Ok(GameCreationAppAssetKind::parse_with_context(value, "serde")) } + + fn visit_string(self, value: String) -> Result + where + E: de::Error, + { + self.visit_str(&value) + } } deserializer.deserialize_str(AssetKindVisitor) @@ -242,4 +249,12 @@ mod tests { ); } } + + #[test] + fn escaped_wire_strings_are_deserialized() { + assert_eq!( + serde_json::from_str::(r#""ui\u002Ddesign""#).unwrap(), + GameCreationAppAssetKind::Unknown + ); + } }