cleanup serde::json::value

This commit is contained in:
Erick Tryzelaar
2014-12-05 22:33:30 -08:00
parent 0bd94c7653
commit e5ddf759de
+11 -11
View File
@@ -20,9 +20,9 @@ pub enum Value {
Boolean(bool), Boolean(bool),
Integer(i64), Integer(i64),
Floating(f64), Floating(f64),
String(string::String), String(String),
Array(Vec<Value>), Array(Vec<Value>),
Object(TreeMap<string::String, Value>), Object(TreeMap<String, Value>),
} }
impl Value { impl Value {
@@ -40,7 +40,7 @@ impl Value {
} }
/// Serializes a json value into a string /// Serializes a json value into a string
pub fn to_pretty_string(&self) -> string::String { pub fn to_pretty_string(&self) -> String {
let mut wr = Vec::new(); let mut wr = Vec::new();
self.to_pretty_writer(wr.by_ref()).unwrap(); self.to_pretty_writer(wr.by_ref()).unwrap();
str::from_utf8(wr.as_slice()).unwrap().to_string() str::from_utf8(wr.as_slice()).unwrap().to_string()
@@ -48,7 +48,7 @@ impl Value {
/// If the Json value is an Object, returns the value associated with the provided key. /// If the Json value is an Object, returns the value associated with the provided key.
/// Otherwise, returns None. /// Otherwise, returns None.
pub fn find<'a>(&'a self, key: &string::String) -> Option<&'a Value>{ pub fn find<'a>(&'a self, key: &String) -> Option<&'a Value>{
match self { match self {
&Value::Object(ref map) => map.get(key), &Value::Object(ref map) => map.get(key),
_ => None _ => None
@@ -58,7 +58,7 @@ impl Value {
/// Attempts to get a nested Json Object for each key in `keys`. /// Attempts to get a nested Json Object for each key in `keys`.
/// If any key is found not to exist, find_path will return None. /// If any key is found not to exist, find_path will return None.
/// Otherwise, it will return the Json value associated with the final key. /// Otherwise, it will return the Json value associated with the final key.
pub fn find_path<'a>(&'a self, keys: &[&string::String]) -> Option<&'a Value>{ pub fn find_path<'a>(&'a self, keys: &[&String]) -> Option<&'a Value>{
let mut target = self; let mut target = self;
for key in keys.iter() { for key in keys.iter() {
match target.find(*key) { match target.find(*key) {
@@ -72,7 +72,7 @@ impl Value {
/// If the Json value is an Object, performs a depth-first search until /// If the Json value is an Object, performs a depth-first search until
/// a value associated with the provided key is found. If no value is found /// a value associated with the provided key is found. If no value is found
/// or the Json value is not an Object, returns None. /// or the Json value is not an Object, returns None.
pub fn search<'a>(&'a self, key: &string::String) -> Option<&'a Value> { pub fn search<'a>(&'a self, key: &String) -> Option<&'a Value> {
match self { match self {
&Value::Object(ref map) => { &Value::Object(ref map) => {
match map.get(key) { match map.get(key) {
@@ -100,7 +100,7 @@ impl Value {
/// If the Json value is an Object, returns the associated TreeMap. /// If the Json value is an Object, returns the associated TreeMap.
/// Returns None otherwise. /// Returns None otherwise.
pub fn as_object<'a>(&'a self) -> Option<&'a TreeMap<string::String, Value>> { pub fn as_object<'a>(&'a self) -> Option<&'a TreeMap<String, Value>> {
match *self { match *self {
Value::Object(ref map) => Some(map), Value::Object(ref map) => Some(map),
_ => None _ => None
@@ -304,7 +304,7 @@ impl<D: de::Deserializer<E>, E> de::Deserialize<D, E> for Value {
enum State { enum State {
Value(Value), Value(Value),
Array(vec::MoveItems<Value>), Array(vec::MoveItems<Value>),
Object(tree_map::MoveEntries<string::String, Value>), Object(tree_map::MoveEntries<String, Value>),
End, End,
} }
@@ -580,7 +580,7 @@ impl<'a> ToJson for &'a str {
fn to_json(&self) -> Value { Value::String(self.to_string()) } fn to_json(&self) -> Value { Value::String(self.to_string()) }
} }
impl ToJson for string::String { impl ToJson for String {
fn to_json(&self) -> Value { Value::String((*self).clone()) } fn to_json(&self) -> Value { Value::String((*self).clone()) }
} }
@@ -628,7 +628,7 @@ impl<A:ToJson> ToJson for Vec<A> {
} }
} }
impl<A:ToJson> ToJson for TreeMap<string::String, A> { impl<A:ToJson> ToJson for TreeMap<String, A> {
fn to_json(&self) -> Value { fn to_json(&self) -> Value {
let mut d = TreeMap::new(); let mut d = TreeMap::new();
for (key, value) in self.iter() { for (key, value) in self.iter() {
@@ -638,7 +638,7 @@ impl<A:ToJson> ToJson for TreeMap<string::String, A> {
} }
} }
impl<A:ToJson> ToJson for HashMap<string::String, A> { impl<A:ToJson> ToJson for HashMap<String, A> {
fn to_json(&self) -> Value { fn to_json(&self) -> Value {
let mut d = TreeMap::new(); let mut d = TreeMap::new();
for (key, value) in self.iter() { for (key, value) in self.iter() {