Fix parsing json into optional types

Does not yet handle parsing missing values as `None` yet though.
Closes #25.
This commit is contained in:
Erick Tryzelaar
2015-03-04 09:42:51 -08:00
parent e9f356755f
commit e7ce710da5
3 changed files with 37 additions and 11 deletions
+18
View File
@@ -392,6 +392,24 @@ impl<Iter: Iterator<Item=u8>> de::Deserializer for Deserializer<Iter> {
{
self.parse_value(visitor)
}
#[inline]
fn visit_option<V>(&mut self, mut visitor: V) -> Result<V::Value, Error>
where V: de::Visitor,
{
self.parse_whitespace();
if self.eof() {
return Err(self.error(ErrorCode::EOFWhileParsingValue));
}
if self.ch_is(b'n') {
try!(self.parse_ident(b"ull"));
visitor.visit_none()
} else {
visitor.visit_some(self)
}
}
}
struct SeqVisitor<'a, Iter: 'a> {