Enum json_toolkit::json::Value
source · [−]pub enum Value {
Null,
Short(Short),
String(String),
Number(Number),
Boolean(bool),
Object(Object),
Array(Vec<JsonValue, Global>),
}
Expand description
Represents any valid JSON value.
Variants
Null
Short(Short)
String(String)
Number(Number)
Boolean(bool)
Object(Object)
Array(Vec<JsonValue, Global>)
Implementations
sourceimpl JsonValue
impl JsonValue
Represents any valid JSON value.
sourcepub fn new_object() -> JsonValue
pub fn new_object() -> JsonValue
Create an empty JsonValue::Object
instance.
When creating an object with data, consider using the object!
macro.
sourcepub fn new_array() -> JsonValue
pub fn new_array() -> JsonValue
Create an empty JsonValue::Array
instance.
When creating array with data, consider using the array!
macro.
sourcepub fn pretty(&self, spaces: u16) -> String
pub fn pretty(&self, spaces: u16) -> String
Pretty prints out the value as JSON string. Takes an argument that’s number of spaces to indent new blocks with.
sourcepub fn to_writer<W>(&self, writer: &mut W) where
W: Write,
👎Deprecated since 0.10.2: use JsonValue::write
instead
pub fn to_writer<W>(&self, writer: &mut W) where
W: Write,
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.
sourcepub fn write<W>(&self, writer: &mut W) -> Result<(), Error> where
W: Write,
pub fn write<W>(&self, writer: &mut W) -> Result<(), Error> where
W: Write,
Writes the JSON as byte stream into an implementor of std::io::Write
.
sourcepub fn write_pretty<W>(&self, writer: &mut W, spaces: u16) -> Result<(), Error> where
W: Write,
pub fn write_pretty<W>(&self, writer: &mut W, spaces: u16) -> Result<(), Error> where
W: Write,
Writes the JSON as byte stream into an implementor of std::io::Write
.
pub fn is_string(&self) -> bool
pub fn is_number(&self) -> bool
pub fn is_boolean(&self) -> bool
pub fn is_null(&self) -> bool
pub fn is_object(&self) -> bool
pub fn is_array(&self) -> bool
sourcepub fn is_empty(&self) -> bool
pub fn is_empty(&self) -> bool
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>
pub fn as_number(&self) -> Option<Number>
pub fn as_f64(&self) -> Option<f64>
pub fn as_f32(&self) -> Option<f32>
pub fn as_u64(&self) -> Option<u64>
pub fn as_u32(&self) -> Option<u32>
pub fn as_u16(&self) -> Option<u16>
pub fn as_u8(&self) -> Option<u8>
pub fn as_usize(&self) -> Option<usize>
pub fn as_i64(&self) -> Option<i64>
pub fn as_i32(&self) -> Option<i32>
pub fn as_i16(&self) -> Option<i16>
pub fn as_i8(&self) -> Option<i8>
pub fn as_isize(&self) -> Option<isize>
pub fn as_bool(&self) -> Option<bool>
sourcepub fn as_fixed_point_u64(&self, point: u16) -> Option<u64>
pub fn as_fixed_point_u64(&self, point: u16) -> Option<u64>
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));
sourcepub fn as_fixed_point_i64(&self, point: u16) -> Option<i64>
pub fn as_fixed_point_i64(&self, point: u16) -> Option<i64>
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));
sourcepub fn take(&mut self) -> JsonValue
pub fn take(&mut self) -> JsonValue
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());
sourcepub fn take_string(&mut self) -> Option<String>
pub fn take_string(&mut self) -> Option<String>
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());
sourcepub fn push<T>(&mut self, value: T) -> Result<(), Error> where
T: Into<JsonValue>,
pub fn push<T>(&mut self, value: T) -> Result<(), Error> where
T: Into<JsonValue>,
Works on JsonValue::Array
- pushes a new value to the array.
sourcepub fn pop(&mut self) -> JsonValue
pub fn pop(&mut self) -> JsonValue
Works on JsonValue::Array
- remove and return last element from
an array. On failure returns a null.
sourcepub fn contains<T>(&self, item: T) -> bool where
T: PartialEq<JsonValue>,
pub fn contains<T>(&self, item: T) -> bool where
T: PartialEq<JsonValue>,
Works on JsonValue::Array
- checks if the array contains a value
sourcepub fn has_key(&self, key: &str) -> bool
pub fn has_key(&self, key: &str) -> bool
Works on JsonValue::Object
- checks if the object has a key
sourcepub fn len(&self) -> usize
pub fn len(&self) -> usize
Returns length of array or object (number of keys), defaults to 0
for
other types.
sourcepub fn members(&self) -> Iter<'_, JsonValue>
pub fn members(&self) -> Iter<'_, JsonValue>
Works on JsonValue::Array
- returns an iterator over members.
Will return an empty iterator if called on non-array types.
sourcepub fn members_mut(&mut self) -> IterMut<'_, JsonValue>
pub fn members_mut(&mut self) -> IterMut<'_, JsonValue>
Works on JsonValue::Array
- returns a mutable iterator over members.
Will return an empty iterator if called on non-array types.
sourcepub fn entries(&self) -> Iter<'_>
pub fn entries(&self) -> Iter<'_>
Works on JsonValue::Object
- returns an iterator over key value pairs.
Will return an empty iterator if called on non-object types.
sourcepub fn entries_mut(&mut self) -> IterMut<'_>
pub fn entries_mut(&mut self) -> IterMut<'_>
Works on JsonValue::Object
- returns a mutable iterator over
key value pairs.
Will return an empty iterator if called on non-object types.
sourcepub fn insert<T>(&mut self, key: &str, value: T) -> Result<(), Error> where
T: Into<JsonValue>,
pub fn insert<T>(&mut self, key: &str, value: T) -> Result<(), Error> where
T: Into<JsonValue>,
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.
sourcepub fn remove(&mut self, key: &str) -> JsonValue
pub fn remove(&mut self, key: &str) -> JsonValue
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.
sourcepub fn array_remove(&mut self, index: usize) -> JsonValue
pub fn array_remove(&mut self, index: usize) -> JsonValue
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
.
Trait Implementations
sourceimpl Display for JsonValue
impl Display for JsonValue
Implements formatting
let data = json::parse(r#"{"url":"https://github.com/"}"#).unwrap();
println!("{}", data);
println!("{:#}", data);
sourceimpl<K, V> From<BTreeMap<K, V, Global>> for JsonValue where
K: AsRef<str>,
V: Into<JsonValue>,
impl<K, V> From<BTreeMap<K, V, Global>> for JsonValue where
K: AsRef<str>,
V: Into<JsonValue>,
sourceimpl<K, V> From<HashMap<K, V, RandomState>> for JsonValue where
K: AsRef<str>,
V: Into<JsonValue>,
impl<K, V> From<HashMap<K, V, RandomState>> for JsonValue where
K: AsRef<str>,
V: Into<JsonValue>,
sourcefn from(val: HashMap<K, V, RandomState>) -> JsonValue
fn from(val: HashMap<K, V, RandomState>) -> JsonValue
Converts to this type from the input type.
sourceimpl<'a> Index<&'a str> for JsonValue
impl<'a> Index<&'a str> for JsonValue
Implements indexing by &str
to easily access object members:
Example
let object = object!{
foo: "bar"
};
assert!(object["foo"] == "bar");
sourceimpl Index<usize> for JsonValue
impl Index<usize> for JsonValue
Implements indexing by usize
to easily access array members:
Example
let mut array = JsonValue::new_array();
array.push("foo");
assert!(array[0] == "foo");
sourceimpl<'a> IndexMut<&'a str> for JsonValue
impl<'a> IndexMut<&'a str> for JsonValue
Implements mutable indexing by &str
to easily modify object members:
Example
let mut object = object!{};
object["foo"] = 42.into();
assert!(object["foo"] == 42);
sourceimpl IndexMut<usize> for JsonValue
impl IndexMut<usize> for JsonValue
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");
sourceimpl<'a> PartialEq<&'a str> for JsonValue
impl<'a> PartialEq<&'a str> for JsonValue
sourceimpl<'a> PartialEq<JsonValue> for &'a str
impl<'a> PartialEq<JsonValue> for &'a str
sourceimpl PartialEq<JsonValue> for JsonValue
impl PartialEq<JsonValue> for JsonValue
sourceimpl<'a> PartialEq<JsonValue> for str
impl<'a> PartialEq<JsonValue> for str
sourceimpl<'a> PartialEq<Number> for &'a JsonValue
impl<'a> PartialEq<Number> for &'a JsonValue
sourceimpl PartialEq<Number> for JsonValue
impl PartialEq<Number> for JsonValue
sourceimpl<'a> PartialEq<Object> for &'a JsonValue
impl<'a> PartialEq<Object> for &'a JsonValue
sourceimpl PartialEq<Object> for JsonValue
impl PartialEq<Object> for JsonValue
sourceimpl<'a> PartialEq<String> for &'a JsonValue
impl<'a> PartialEq<String> for &'a JsonValue
sourceimpl PartialEq<String> for JsonValue
impl PartialEq<String> for JsonValue
sourceimpl<'a> PartialEq<bool> for &'a JsonValue
impl<'a> PartialEq<bool> for &'a JsonValue
sourceimpl PartialEq<bool> for JsonValue
impl PartialEq<bool> for JsonValue
sourceimpl<'a> PartialEq<f32> for &'a JsonValue
impl<'a> PartialEq<f32> for &'a JsonValue
sourceimpl PartialEq<f32> for JsonValue
impl PartialEq<f32> for JsonValue
sourceimpl<'a> PartialEq<f64> for &'a JsonValue
impl<'a> PartialEq<f64> for &'a JsonValue
sourceimpl PartialEq<f64> for JsonValue
impl PartialEq<f64> for JsonValue
sourceimpl<'a> PartialEq<i16> for &'a JsonValue
impl<'a> PartialEq<i16> for &'a JsonValue
sourceimpl PartialEq<i16> for JsonValue
impl PartialEq<i16> for JsonValue
sourceimpl<'a> PartialEq<i32> for &'a JsonValue
impl<'a> PartialEq<i32> for &'a JsonValue
sourceimpl PartialEq<i32> for JsonValue
impl PartialEq<i32> for JsonValue
sourceimpl<'a> PartialEq<i64> for &'a JsonValue
impl<'a> PartialEq<i64> for &'a JsonValue
sourceimpl PartialEq<i64> for JsonValue
impl PartialEq<i64> for JsonValue
sourceimpl<'a> PartialEq<i8> for &'a JsonValue
impl<'a> PartialEq<i8> for &'a JsonValue
sourceimpl PartialEq<i8> for JsonValue
impl PartialEq<i8> for JsonValue
sourceimpl<'a> PartialEq<isize> for &'a JsonValue
impl<'a> PartialEq<isize> for &'a JsonValue
sourceimpl PartialEq<isize> for JsonValue
impl PartialEq<isize> for JsonValue
sourceimpl PartialEq<str> for JsonValue
impl PartialEq<str> for JsonValue
sourceimpl<'a> PartialEq<u16> for &'a JsonValue
impl<'a> PartialEq<u16> for &'a JsonValue
sourceimpl PartialEq<u16> for JsonValue
impl PartialEq<u16> for JsonValue
sourceimpl<'a> PartialEq<u32> for &'a JsonValue
impl<'a> PartialEq<u32> for &'a JsonValue
sourceimpl PartialEq<u32> for JsonValue
impl PartialEq<u32> for JsonValue
sourceimpl<'a> PartialEq<u64> for &'a JsonValue
impl<'a> PartialEq<u64> for &'a JsonValue
sourceimpl PartialEq<u64> for JsonValue
impl PartialEq<u64> for JsonValue
sourceimpl<'a> PartialEq<u8> for &'a JsonValue
impl<'a> PartialEq<u8> for &'a JsonValue
sourceimpl PartialEq<u8> for JsonValue
impl PartialEq<u8> for JsonValue
sourceimpl<'a> PartialEq<usize> for &'a JsonValue
impl<'a> PartialEq<usize> for &'a JsonValue
sourceimpl PartialEq<usize> for JsonValue
impl PartialEq<usize> for JsonValue
sourceimpl ValueExt for Value
impl ValueExt for Value
sourcefn pointer_mut(&mut self, pointer: &Pointer<'_>) -> Option<&mut Self>
fn pointer_mut(&mut self, pointer: &Pointer<'_>) -> Option<&mut Self>
Looks up a value by a JSON pointer and returns a mutable reference to that value.
impl Eq for JsonValue
Auto Trait Implementations
impl RefUnwindSafe for JsonValue
impl Send for JsonValue
impl Sync for JsonValue
impl Unpin for JsonValue
impl UnwindSafe for JsonValue
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more