[][src]Enum wof::JsonValue

pub enum JsonValue {
    Null,
    Short(Short),
    String(String),
    Number(Number),
    Boolean(bool),
    Object(Object),
    Array(Vec<JsonValue>),
}

Variants

Null
Short(Short)
String(String)
Number(Number)
Boolean(bool)
Object(Object)
Array(Vec<JsonValue>)

Methods

impl JsonValue[src]

pub fn new_object() -> JsonValue[src]

Create an empty JsonValue::Object instance. When creating an object with data, consider using the object! macro.

pub fn new_array() -> JsonValue[src]

Create an empty JsonValue::Array instance. When creating array with data, consider using the array! macro.

pub fn dump(&self) -> String[src]

Prints out the value as JSON string.

pub fn pretty(&self, spaces: u16) -> String[src]

Pretty prints out the value as JSON string. Takes an argument that's number of spaces to indent new blocks with.

pub fn to_writer<W>(&self, writer: &mut W) where
    W: Write
[src]

Deprecated since 0.10.2:

use JsonValue::write instead

Writes the JSON as byte stream into an implementor of std::io::Write.

This method is deprecated as it will panic on io errors, use write instead.

pub fn write<W>(&self, writer: &mut W) -> Result<(), Error> where
    W: Write
[src]

Writes the JSON as byte stream into an implementor of std::io::Write.

pub fn write_pretty<W>(&self, writer: &mut W, spaces: u16) -> Result<(), Error> where
    W: Write
[src]

Writes the JSON as byte stream into an implementor of std::io::Write.

pub fn is_string(&self) -> bool[src]

pub fn is_number(&self) -> bool[src]

pub fn is_boolean(&self) -> bool[src]

pub fn is_null(&self) -> bool[src]

pub fn is_object(&self) -> bool[src]

pub fn is_array(&self) -> bool[src]

pub fn is_empty(&self) -> bool[src]

Checks whether the value is empty. Returns true for:

  • empty string ("")
  • number 0
  • boolean false
  • null
  • empty array (array![])
  • empty object (object!{})

pub fn as_str(&self) -> Option<&str>[src]

pub fn as_number(&self) -> Option<Number>[src]

pub fn as_f64(&self) -> Option<f64>[src]

pub fn as_f32(&self) -> Option<f32>[src]

pub fn as_u64(&self) -> Option<u64>[src]

pub fn as_u32(&self) -> Option<u32>[src]

pub fn as_u16(&self) -> Option<u16>[src]

pub fn as_u8(&self) -> Option<u8>[src]

pub fn as_usize(&self) -> Option<usize>[src]

pub fn as_i64(&self) -> Option<i64>[src]

pub fn as_i32(&self) -> Option<i32>[src]

pub fn as_i16(&self) -> Option<i16>[src]

pub fn as_i8(&self) -> Option<i8>[src]

pub fn as_isize(&self) -> Option<isize>[src]

pub fn as_bool(&self) -> Option<bool>[src]

pub fn as_fixed_point_u64(&self, point: u16) -> Option<u64>[src]

Obtain an integer at a fixed decimal point. This is useful for converting monetary values and doing arithmetic on them without rounding errors introduced by floating point operations.

Will return None if Number called on a value that's not a number, or if the number is negative or a NaN.

let price_a = JsonValue::from(5.99);
let price_b = JsonValue::from(7);
let price_c = JsonValue::from(10.2);

assert_eq!(price_a.as_fixed_point_u64(2), Some(599));
assert_eq!(price_b.as_fixed_point_u64(2), Some(700));
assert_eq!(price_c.as_fixed_point_u64(2), Some(1020));

pub fn as_fixed_point_i64(&self, point: u16) -> Option<i64>[src]

Analog to as_fixed_point_u64, except returning a signed i64, properly handling negative numbers.

let balance_a = JsonValue::from(-1.49);
let balance_b = JsonValue::from(42);

assert_eq!(balance_a.as_fixed_point_i64(2), Some(-149));
assert_eq!(balance_b.as_fixed_point_i64(2), Some(4200));

pub fn take(&mut self) -> JsonValue[src]

Take over the ownership of the value, leaving Null in it's place.

Example

let mut data = array!["Foo", 42];

let first = data[0].take();
let second = data[1].take();

assert!(first == "Foo");
assert!(second == 42);

assert!(data[0].is_null());
assert!(data[1].is_null());

pub fn take_string(&mut self) -> Option<String>[src]

Checks that self is a string, returns an owned Rust String, leaving Null in it's place.

  • If the contained string is already a heap allocated String, then the ownership is moved without any heap allocation.

  • If the contained string is a Short, this will perform a heap allocation to convert the types for you.

Example

let mut data = array!["Hello", "World"];

let owned = data[0].take_string().expect("Should be a string");

assert_eq!(owned, "Hello");
assert!(data[0].is_null());

pub fn push<T>(&mut self, value: T) -> Result<(), Error> where
    T: Into<JsonValue>, 
[src]

Works on JsonValue::Array - pushes a new value to the array.

pub fn pop(&mut self) -> JsonValue[src]

Works on JsonValue::Array - remove and return last element from an array. On failure returns a null.

pub fn contains<T>(&self, item: T) -> bool where
    T: PartialEq<JsonValue>, 
[src]

Works on JsonValue::Array - checks if the array contains a value

pub fn has_key(&self, key: &str) -> bool[src]

Works on JsonValue::Object - checks if the object has a key

pub fn len(&self) -> usize[src]

Returns length of array or object (number of keys), defaults to 0 for other types.

pub fn members(&self) -> Iter<JsonValue>[src]

Works on JsonValue::Array - returns an iterator over members. Will return an empty iterator if called on non-array types.

pub fn members_mut(&mut self) -> IterMut<JsonValue>[src]

Works on JsonValue::Array - returns a mutable iterator over members. Will return an empty iterator if called on non-array types.

pub fn entries(&self) -> Iter[src]

Works on JsonValue::Object - returns an iterator over key value pairs. Will return an empty iterator if called on non-object types.

pub fn entries_mut(&mut self) -> IterMut[src]

Works on JsonValue::Object - returns a mutable iterator over key value pairs. Will return an empty iterator if called on non-object types.

pub fn insert<T>(&mut self, key: &str, value: T) -> Result<(), Error> where
    T: Into<JsonValue>, 
[src]

Works on JsonValue::Object - inserts a new entry, or override an existing one into the object. Note that key has to be a &str slice and not an owned String. The internals of Object will handle the heap allocation of the key if needed for better performance.

pub fn remove(&mut self, key: &str) -> JsonValue[src]

Works on JsonValue::Object - remove a key and return the value it held. If the key was not present, the method is called on anything but an object, it will return a null.

pub fn array_remove(&mut self, index: usize) -> JsonValue[src]

Works on JsonValue::Array - remove an entry and return the value it held. If the method is called on anything but an object or if the index is out of bounds, it will return JsonValue::Null.

pub fn clear(&mut self)[src]

When called on an array or an object, will wipe them clean. When called on a string will clear the string. Numbers and booleans become null.

Trait Implementations

impl Clone for JsonValue[src]

impl Debug for JsonValue[src]

impl Display for JsonValue[src]

Implements formatting

let data = json::parse(r#"{"url":"https://github.com/"}"#).unwrap();
println!("{}", data);
println!("{:#}", data);

impl Eq for JsonValue[src]

impl<'a, T> From<&'a [T]> for JsonValue where
    T: Clone + Into<JsonValue>, 
[src]

impl<'a> From<&'a str> for JsonValue[src]

impl<K, V> From<BTreeMap<K, V>> for JsonValue where
    K: AsRef<str>,
    V: Into<JsonValue>, 
[src]

impl<K, V> From<HashMap<K, V, RandomState>> for JsonValue where
    K: AsRef<str>,
    V: Into<JsonValue>, 
[src]

impl From<Number> for JsonValue[src]

impl From<Object> for JsonValue[src]

impl<T> From<Option<T>> for JsonValue where
    T: Into<JsonValue>, 
[src]

impl From<String> for JsonValue[src]

impl<T> From<Vec<T>> for JsonValue where
    T: Into<JsonValue>, 
[src]

impl From<bool> for JsonValue[src]

impl From<f32> for JsonValue[src]

impl From<f64> for JsonValue[src]

impl From<i16> for JsonValue[src]

impl From<i32> for JsonValue[src]

impl From<i64> for JsonValue[src]

impl From<i8> for JsonValue[src]

impl From<isize> for JsonValue[src]

impl From<u16> for JsonValue[src]

impl From<u32> for JsonValue[src]

impl From<u64> for JsonValue[src]

impl From<u8> for JsonValue[src]

impl From<usize> for JsonValue[src]

impl GeoJsonUtils for JsonValue[src]

impl<'a> Index<&'a String> for JsonValue[src]

type Output = JsonValue

The returned type after indexing.

impl<'a> Index<&'a str> for JsonValue[src]

Implements indexing by &str to easily access object members:

Example

let object = object!{
    "foo" => "bar"
};

assert!(object["foo"] == "bar");

type Output = JsonValue

The returned type after indexing.

impl Index<String> for JsonValue[src]

type Output = JsonValue

The returned type after indexing.

impl Index<usize> for JsonValue[src]

Implements indexing by usize to easily access array members:

Example

let mut array = JsonValue::new_array();

array.push("foo");

assert!(array[0] == "foo");

type Output = JsonValue

The returned type after indexing.

impl<'a> IndexMut<&'a String> for JsonValue[src]

impl<'a> IndexMut<&'a str> for JsonValue[src]

Implements mutable indexing by &str to easily modify object members:

Example

let mut object = object!{};

object["foo"] = 42.into();

assert!(object["foo"] == 42);

impl IndexMut<String> for JsonValue[src]

impl IndexMut<usize> for JsonValue[src]

Implements mutable indexing by usize to easily modify array members:

Example

let mut array = array!["foo", 3.14];

array[1] = "bar".into();

assert!(array[1] == "bar");

impl JsonUtils for JsonValue[src]

impl<'a> PartialEq<&'a str> for JsonValue[src]

impl PartialEq<JsonValue> for Object[src]

impl PartialEq<JsonValue> for JsonValue[src]

impl<'a> PartialEq<Number> for &'a JsonValue[src]

impl PartialEq<Number> for JsonValue[src]

impl PartialEq<Object> for JsonValue[src]

impl<'a> PartialEq<Object> for &'a JsonValue[src]

impl<'a> PartialEq<String> for &'a JsonValue[src]

impl PartialEq<String> for JsonValue[src]

impl<'a> PartialEq<bool> for &'a JsonValue[src]

impl PartialEq<bool> for JsonValue[src]

impl<'a> PartialEq<f32> for &'a JsonValue[src]

impl PartialEq<f32> for JsonValue[src]

impl<'a> PartialEq<f64> for &'a JsonValue[src]

impl PartialEq<f64> for JsonValue[src]

impl<'a> PartialEq<i16> for &'a JsonValue[src]

impl PartialEq<i16> for JsonValue[src]

impl<'a> PartialEq<i32> for &'a JsonValue[src]

impl PartialEq<i32> for JsonValue[src]

impl<'a> PartialEq<i64> for &'a JsonValue[src]

impl PartialEq<i64> for JsonValue[src]

impl PartialEq<i8> for JsonValue[src]

impl<'a> PartialEq<i8> for &'a JsonValue[src]

impl PartialEq<isize> for JsonValue[src]

impl<'a> PartialEq<isize> for &'a JsonValue[src]

impl PartialEq<str> for JsonValue[src]

impl PartialEq<u16> for JsonValue[src]

impl<'a> PartialEq<u16> for &'a JsonValue[src]

impl<'a> PartialEq<u32> for &'a JsonValue[src]

impl PartialEq<u32> for JsonValue[src]

impl PartialEq<u64> for JsonValue[src]

impl<'a> PartialEq<u64> for &'a JsonValue[src]

impl PartialEq<u8> for JsonValue[src]

impl<'a> PartialEq<u8> for &'a JsonValue[src]

impl<'a> PartialEq<usize> for &'a JsonValue[src]

impl PartialEq<usize> for JsonValue[src]

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T> ToString for T where
    T: Display + ?Sized
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.